@peerbit/log 3.0.34-aa577a5 → 3.0.34-cccc078
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/dist/src/log-sorting.js
CHANGED
|
@@ -1,87 +1,105 @@
|
|
|
1
|
-
import {} from "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Compare, IntegerCompare, Sort, SortDirection, } from "@peerbit/indexer-interface";
|
|
2
|
+
export const ENTRY_SORT_SHAPE = {
|
|
3
|
+
hash: true,
|
|
4
|
+
meta: { gid: true, clock: true },
|
|
5
|
+
};
|
|
5
6
|
/**
|
|
6
7
|
* Sort two entries as Last-Write-Wins (LWW).
|
|
7
8
|
*
|
|
8
9
|
* Last Write Wins is a conflict resolution strategy for sorting elements
|
|
9
10
|
* where the element with a greater clock (latest) is chosen as the winner.
|
|
10
11
|
*
|
|
11
|
-
* @param {Entry} a First entry
|
|
12
|
-
* @param {Entry} b Second entry
|
|
13
|
-
* @returns {number} 1 if a is latest, -1 if b is latest
|
|
14
|
-
*/
|
|
15
|
-
export const LastWriteWins = (a, b) => {
|
|
16
|
-
// Ultimate conflict resolution (take the first/left arg)
|
|
17
|
-
// Sort two entries by their clock id, if the same always take the first
|
|
18
|
-
const sortById = (a, b) => SortByClockId(a, b, First);
|
|
19
|
-
// Sort two entries by their clock time, if concurrent,
|
|
20
|
-
// determine sorting using provided conflict resolution function
|
|
21
|
-
const sortByEntryClocks = (a, b) => SortByClocks(a, b, sortById);
|
|
22
|
-
// Sort entries by clock time as the primary sort criteria
|
|
23
|
-
return sortByEntryClocks(a, b);
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Sort two entries by their hash.
|
|
27
|
-
*
|
|
28
|
-
* @param {Entry} a First entry
|
|
29
|
-
* @param {Entry} b Second entry
|
|
30
|
-
* @returns {number} 1 if a is latest, -1 if b is latest
|
|
31
12
|
*/
|
|
32
|
-
export const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
export const LastWriteWins = {
|
|
14
|
+
sort: [
|
|
15
|
+
// sort first by clock
|
|
16
|
+
new Sort({
|
|
17
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
18
|
+
direction: SortDirection.ASC,
|
|
19
|
+
}),
|
|
20
|
+
// then by logical
|
|
21
|
+
new Sort({
|
|
22
|
+
key: ["meta", "clock", "timestamp", "logical"],
|
|
23
|
+
direction: SortDirection.ASC,
|
|
24
|
+
}),
|
|
25
|
+
],
|
|
26
|
+
before: (entry) => [
|
|
27
|
+
new IntegerCompare({
|
|
28
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
29
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
30
|
+
compare: Compare.Less,
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
after: (entry) => [
|
|
34
|
+
new IntegerCompare({
|
|
35
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
36
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
37
|
+
compare: Compare.Greater,
|
|
38
|
+
}),
|
|
39
|
+
],
|
|
42
40
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
export const FirstWriteWins = {
|
|
42
|
+
sort: [
|
|
43
|
+
new Sort({
|
|
44
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
45
|
+
direction: SortDirection.DESC,
|
|
46
|
+
}),
|
|
47
|
+
// then by logical
|
|
48
|
+
new Sort({
|
|
49
|
+
key: ["meta", "clock", "timestamp", "logical"],
|
|
50
|
+
direction: SortDirection.DESC,
|
|
51
|
+
}),
|
|
52
|
+
],
|
|
53
|
+
before: (entry) => [
|
|
54
|
+
new IntegerCompare({
|
|
55
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
56
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
57
|
+
compare: Compare.Greater,
|
|
58
|
+
}),
|
|
59
|
+
],
|
|
60
|
+
after: (entry) => [
|
|
61
|
+
new IntegerCompare({
|
|
62
|
+
key: ["meta", "clock", "timestamp", "wallTime"],
|
|
63
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
64
|
+
compare: Compare.Less,
|
|
65
|
+
}),
|
|
66
|
+
],
|
|
56
67
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
export const SortByEntryHash = {
|
|
69
|
+
sort: [
|
|
70
|
+
// sort first by clock
|
|
71
|
+
new Sort({
|
|
72
|
+
key: ["hash"],
|
|
73
|
+
direction: SortDirection.ASC,
|
|
74
|
+
}),
|
|
75
|
+
],
|
|
76
|
+
before: (entry) => [
|
|
77
|
+
new IntegerCompare({
|
|
78
|
+
key: ["hash"],
|
|
79
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
80
|
+
compare: Compare.Less,
|
|
81
|
+
}),
|
|
82
|
+
],
|
|
83
|
+
after: (entry) => [
|
|
84
|
+
new IntegerCompare({
|
|
85
|
+
key: ["hash"],
|
|
86
|
+
value: entry.meta.clock.timestamp.wallTime,
|
|
87
|
+
compare: Compare.Greater,
|
|
88
|
+
}),
|
|
89
|
+
],
|
|
69
90
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (result === 0) {
|
|
81
|
-
throw Error(`Your log's tiebreaker function, ${func.name}, has returned zero and therefore cannot be`);
|
|
91
|
+
export const compare = (a, b, sortFn) => {
|
|
92
|
+
for (const sort of sortFn.sort) {
|
|
93
|
+
const aVal = sort.key.reduce((prev, curr) => prev[curr], a);
|
|
94
|
+
const bVal = sort.key.reduce((prev, curr) => prev[curr], b);
|
|
95
|
+
let multiplier = sort.direction === SortDirection.ASC ? 1 : -1;
|
|
96
|
+
if (aVal < bVal) {
|
|
97
|
+
return -1 * multiplier;
|
|
98
|
+
}
|
|
99
|
+
if (aVal > bVal) {
|
|
100
|
+
return 1 * multiplier;
|
|
82
101
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return comparator;
|
|
102
|
+
}
|
|
103
|
+
return 0;
|
|
86
104
|
};
|
|
87
105
|
//# sourceMappingURL=log-sorting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-sorting.js","sourceRoot":"","sources":["../../src/log-sorting.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"log-sorting.js","sourceRoot":"","sources":["../../src/log-sorting.ts"],"names":[],"mappings":"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"}
|
package/dist/src/log.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { SignatureWithKey, type Identity, X25519Keypair } from "@peerbit/crypto";
|
|
2
1
|
import { type AnyStore } from "@peerbit/any-store";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { type
|
|
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
8
|
import { type Encoding } from "./encoding.js";
|
|
8
|
-
import { type
|
|
9
|
-
import { Values } from "./values.js";
|
|
10
|
-
import { type TrimOptions } from "./trim.js";
|
|
11
|
-
import { type Change } from "./change.js";
|
|
9
|
+
import { EntryIndex, type MaybeResolveOptions, type ResultsIterator, type ReturnTypeFromResolveOptions } from "./entry-index.js";
|
|
12
10
|
import { type EntryWithRefs } from "./entry-with-refs.js";
|
|
13
|
-
import { type
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
|
|
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";
|
|
14
|
+
export type LogEvents<T> = {
|
|
15
|
+
onChange?: (change: Change<T>) => void;
|
|
17
16
|
onGidRemoved?: (gids: string[]) => Promise<void> | void;
|
|
18
17
|
};
|
|
19
18
|
export type MemoryProperties = {
|
|
20
|
-
|
|
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.
|
|
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)[];
|
|
@@ -47,25 +47,43 @@ export type AppendOptions<T> = {
|
|
|
47
47
|
canAppend?: CanAppend<T>;
|
|
48
48
|
};
|
|
49
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
|
+
};
|
|
69
|
+
};
|
|
50
70
|
export declare class Log<T> {
|
|
51
71
|
private _id;
|
|
52
|
-
private _sortFn;
|
|
53
72
|
private _storage;
|
|
54
73
|
private _hlc;
|
|
55
74
|
private _identity;
|
|
56
75
|
private _entryIndex;
|
|
57
|
-
private _headsIndex;
|
|
58
|
-
private _values;
|
|
59
|
-
private _nextsIndex;
|
|
60
76
|
private _keychain?;
|
|
61
77
|
private _encoding;
|
|
62
78
|
private _trim;
|
|
63
|
-
private _entryCache;
|
|
64
79
|
private _canAppend?;
|
|
65
80
|
private _onChange?;
|
|
66
81
|
private _closed;
|
|
67
|
-
private
|
|
82
|
+
private _closeController;
|
|
83
|
+
private _loadedOnce;
|
|
84
|
+
private _indexer;
|
|
68
85
|
private _joining;
|
|
86
|
+
private _sortFn;
|
|
69
87
|
constructor(properties?: {
|
|
70
88
|
id?: Uint8Array;
|
|
71
89
|
});
|
|
@@ -79,14 +97,13 @@ export declare class Log<T> {
|
|
|
79
97
|
* Returns the length of the log.
|
|
80
98
|
*/
|
|
81
99
|
get length(): number;
|
|
82
|
-
get values(): Values<T>;
|
|
83
100
|
get canAppend(): CanAppend<T> | undefined;
|
|
84
101
|
/**
|
|
85
102
|
* Checks if a entry is part of the log
|
|
86
103
|
* @param {string} hash The hash of the entry
|
|
87
104
|
* @returns {boolean}
|
|
88
105
|
*/
|
|
89
|
-
has(cid: string): boolean
|
|
106
|
+
has(cid: string): Promise<boolean>;
|
|
90
107
|
/**
|
|
91
108
|
* Get all entries sorted. Don't use this method anywhere where performance matters
|
|
92
109
|
*/
|
|
@@ -94,9 +111,7 @@ export declare class Log<T> {
|
|
|
94
111
|
/**
|
|
95
112
|
* Returns the head index
|
|
96
113
|
*/
|
|
97
|
-
|
|
98
|
-
get memory(): AnyStore | undefined;
|
|
99
|
-
getHeads(): Promise<Entry<T>[]>;
|
|
114
|
+
getHeads<R extends MaybeResolveOptions = false>(resolve?: R): ResultsIterator<ReturnTypeFromResolveOptions<R, T>>;
|
|
100
115
|
/**
|
|
101
116
|
* Returns an array of Entry objects that reference entries which
|
|
102
117
|
* are not in the log currently.
|
|
@@ -115,11 +130,10 @@ export declare class Log<T> {
|
|
|
115
130
|
get hlc(): HLC;
|
|
116
131
|
get identity(): Identity;
|
|
117
132
|
get blocks(): Blocks;
|
|
118
|
-
get nextsIndex(): Map<string, Set<string>>;
|
|
119
133
|
get entryIndex(): EntryIndex<T>;
|
|
120
134
|
get keychain(): Keychain | undefined;
|
|
121
135
|
get encoding(): Encoding<T>;
|
|
122
|
-
get sortFn(): Sorting.
|
|
136
|
+
get sortFn(): Sorting.SortFn;
|
|
123
137
|
get closed(): boolean;
|
|
124
138
|
/**
|
|
125
139
|
* Set the identity for the log
|
|
@@ -127,51 +141,53 @@ export declare class Log<T> {
|
|
|
127
141
|
*/
|
|
128
142
|
setIdentity(identity: Identity): void;
|
|
129
143
|
/**
|
|
130
|
-
*
|
|
144
|
+
* Get an entry.
|
|
131
145
|
* @param {string} [hash] The hashes of the entry
|
|
132
146
|
*/
|
|
133
147
|
get(hash: string, options?: {
|
|
134
148
|
timeout?: number;
|
|
135
149
|
}): Promise<Entry<T> | undefined>;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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>;
|
|
139
157
|
getReferenceSamples(from: Entry<T>, options?: {
|
|
140
158
|
pointerCount?: number;
|
|
141
159
|
memoryLimit?: number;
|
|
142
160
|
}): Promise<Entry<T>[]>;
|
|
143
161
|
/**
|
|
144
162
|
* Append an entry to the log.
|
|
145
|
-
* @param {
|
|
146
|
-
* @
|
|
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
|
|
147
166
|
*/
|
|
148
167
|
append(data: T, options?: AppendOptions<T>): Promise<{
|
|
149
168
|
entry: Entry<T>;
|
|
150
|
-
removed:
|
|
169
|
+
removed: ShallowOrFullEntry<T>[];
|
|
151
170
|
}>;
|
|
152
|
-
reset(entries
|
|
153
|
-
remove(entry:
|
|
171
|
+
reset(entries?: Entry<T>[]): Promise<void>;
|
|
172
|
+
remove(entry: ShallowOrFullEntry<T> | ShallowOrFullEntry<T>[], options?: {
|
|
154
173
|
recursively?: boolean;
|
|
155
174
|
}): Promise<Change<T>>;
|
|
156
|
-
iterator(options?: {
|
|
157
|
-
from?: "tail" | "head";
|
|
158
|
-
amount?: number;
|
|
159
|
-
}): IterableIterator<string>;
|
|
160
175
|
trim(option?: TrimOptions | undefined): Promise<Entry<T>[] | undefined>;
|
|
161
|
-
|
|
162
|
-
*
|
|
163
|
-
* @param entries
|
|
164
|
-
* @returns change
|
|
165
|
-
*/
|
|
166
|
-
join(entriesOrLog: (string | Entry<T> | EntryWithRefs<T>)[] | Log<T>, options?: {
|
|
176
|
+
join(entriesOrLog: (string | Entry<T> | ShallowEntry | EntryWithRefs<T>)[] | Log<T> | ResultsIterator<Entry<any>>, options?: {
|
|
167
177
|
verifySignatures?: boolean;
|
|
168
178
|
trim?: TrimOptions;
|
|
169
179
|
timeout?: number;
|
|
170
|
-
}
|
|
171
|
-
|
|
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;
|
|
172
188
|
private processEntry;
|
|
173
|
-
deleteRecursively(from:
|
|
174
|
-
delete(
|
|
189
|
+
deleteRecursively(from: ShallowOrFullEntry<T> | ShallowOrFullEntry<T>[], skipFirst?: boolean): Promise<ShallowEntry[]>;
|
|
190
|
+
delete(hash: string): Promise<ShallowEntry | undefined>;
|
|
175
191
|
/**
|
|
176
192
|
* Returns the log entries as a formatted string.
|
|
177
193
|
* @returns {string}
|
|
@@ -181,15 +197,16 @@ export declare class Log<T> {
|
|
|
181
197
|
* └─three
|
|
182
198
|
*/
|
|
183
199
|
toString(payloadMapper?: (payload: Payload<T>) => string): Promise<string>;
|
|
184
|
-
idle(): Promise<void>;
|
|
185
200
|
close(): Promise<void>;
|
|
186
201
|
drop(): Promise<void>;
|
|
187
202
|
recover(): Promise<void>;
|
|
188
203
|
load(opts?: {
|
|
189
204
|
heads?: Entry<T>[];
|
|
190
205
|
fetchEntryTimeout?: number;
|
|
191
|
-
|
|
206
|
+
reset?: boolean;
|
|
192
207
|
ignoreMissing?: boolean;
|
|
208
|
+
timeout?: number;
|
|
209
|
+
reload?: boolean;
|
|
193
210
|
}): Promise<void>;
|
|
194
211
|
static fromEntry<T>(store: Blocks, identity: Identity, entryOrHash: string | string[] | Entry<T> | Entry<T>[], options?: {
|
|
195
212
|
id?: Uint8Array;
|
|
@@ -201,7 +218,7 @@ export declare class Log<T> {
|
|
|
201
218
|
* Finds entries that are the heads of this collection,
|
|
202
219
|
* ie. entries that are not referenced by other entries.
|
|
203
220
|
*
|
|
204
|
-
* @param {Array<Entry<T>>} entries Entries to search heads from
|
|
221
|
+
* @param {Array<Entry<T>>} entries - Entries to search heads from
|
|
205
222
|
* @returns {Array<Entry<T>>}
|
|
206
223
|
*/
|
|
207
224
|
static findHeads<T>(entries: Entry<T>[]): Entry<T>[];
|
package/dist/src/log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACN,KAAK,QAAQ,EACb,gBAAgB,EAChB,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAEN,GAAG,EACH,YAAY,EACZ,SAAS,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,eAAe,CAAC;AAC3D,OAAO,EACN,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACN,KAAK,SAAS,EACd,KAAK,gCAAgC,EACrC,KAAK,EACL,SAAS,EACT,OAAO,EACP,YAAY,EACZ,KAAK,kBAAkB,EACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAInD,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAA2B,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAE/E,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC9B,IAAI,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;KACrC,CAAC;IAEF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CACV,IAAI,EAAE,UAAU,KACZ,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAErD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE;QACZ,OAAO,EAAE,aAAa,CAAC;QACvB,QAAQ,EAAE,gCAAgC,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,IAAI,CAClB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,SAAS,CAAC,EAAE,SAAS,KACjB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE;QACL,KAAK,EAAE;YACN,SAAS,EAAE,SAAS,CAAC;SACrB,CAAC;QACF,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,CAAC;KAChB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;CAGnB,CAAC;AAEX,qBACa,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,CAAa;IAGxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,IAAI,CAAO;IAGnB,OAAO,CAAC,SAAS,CAAY;IAG7B,OAAO,CAAC,WAAW,CAAiB;IAMpC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,SAAS,CAAC,CAAc;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAkB;gBAErB,UAAU,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,UAAU,CAAA;KAAE;IAItC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,UAAU,CAAC,CAAC,CAAM;IAmFzE,OAAO,CAAC,SAAS,CAAqB;IAEtC,IAAI,QAAQ,WAKX;WAEa,cAAc,CAAC,EAAE,EAAE,UAAU;IAI3C,IAAI,EAAE,IAGK,UAAU,CADpB;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,EAMpB;IAED;;OAEG;IACH,IAAI,MAAM,WAKT;IAED,IAAI,SAAS,6BAEZ;IAED;;;;OAIG;IAEH,GAAG,CAAC,GAAG,EAAE,MAAM;IAGf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAKpC;;OAEG;IAEH,QAAQ,CAAC,CAAC,SAAS,mBAAmB,GAAG,KAAK,EAC7C,OAAO,GAAE,CAAc,GACrB,eAAe,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAItD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAIrC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC;;OAEG;IACH,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAE9B;IAED,IAAI,QAAQ,yBAEX;IAED,IAAI,QAAQ,gBAEX;IAED,IAAI,MAAM,mBAET;IAED,IAAI,MAAM,YAET;IAED;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B;;;OAGG;IACH,GAAG,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAOhC;;;OAGG;IACG,UAAU,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAqE9B,mBAAmB,CACxB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IA8DtB;;;;;OAKG;IACG,MAAM,CACX,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM,GAC5B,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE,CAAC;IAqG3D,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;IAO1B,MAAM,CACX,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACtD,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAoDf,IAAI,CAAC,MAAM,GAAE,WAAW,GAAG,SAA8B;IAIzD,IAAI,CACT,YAAY,EACT,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,GACvD,GAAG,CAAC,CAAC,CAAC,GACN,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,GACC,OAAO,CAAC,IAAI,CAAC;IAmFhB;;;;;OAKG;YAEW,eAAe;YAqGf,YAAY;IAQpB,iBAAiB,CACtB,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACrD,SAAS,UAAQ;IA4CZ,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAM7D;;;;;;;OAOG;IACG,QAAQ,CACb,aAAa,GAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MACY,GAClD,OAAO,CAAC,MAAM,CAAC;IAwBZ,KAAK;IASL,IAAI;IASJ,OAAO;IAkCP,IAAI,CACT,IAAI,GAAE;QACL,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KACZ;WAqCM,SAAS,CAAC,CAAC,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtD,OAAO,GAAE;QACR,EAAE,CAAC,EAAE,UAAU,CAAC;QAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,UAAU,CAAC,CAAC,CAA2B,GACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAWlB;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;IAiBvC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAoDpD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;CAsB3C"}
|