@optimystic/db-core 0.17.0 → 0.19.0
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/README.md +336 -336
- package/dist/src/btree/btree.d.ts +1 -1
- package/dist/src/btree/btree.d.ts.map +1 -1
- package/dist/src/btree/btree.js +5 -1
- package/dist/src/btree/btree.js.map +1 -1
- package/dist/src/cluster/structs.d.ts +14 -3
- package/dist/src/cluster/structs.d.ts.map +1 -1
- package/dist/src/collection/collection-type-registry.d.ts +3 -2
- package/dist/src/collection/collection-type-registry.d.ts.map +1 -1
- package/dist/src/collection/collection-type-registry.js.map +1 -1
- package/dist/src/collection/collection.d.ts +44 -0
- package/dist/src/collection/collection.d.ts.map +1 -1
- package/dist/src/collection/collection.js +134 -27
- package/dist/src/collection/collection.js.map +1 -1
- package/dist/src/collection/struct.d.ts +43 -1
- package/dist/src/collection/struct.d.ts.map +1 -1
- package/dist/src/collection/struct.js +42 -2
- package/dist/src/collection/struct.js.map +1 -1
- package/dist/src/collections/diary/diary.d.ts +6 -1
- package/dist/src/collections/diary/diary.d.ts.map +1 -1
- package/dist/src/collections/diary/diary.js +26 -19
- package/dist/src/collections/diary/diary.js.map +1 -1
- package/dist/src/collections/tree/tree.d.ts +15 -0
- package/dist/src/collections/tree/tree.d.ts.map +1 -1
- package/dist/src/collections/tree/tree.js +37 -12
- package/dist/src/collections/tree/tree.js.map +1 -1
- package/dist/src/network/i-key-network.d.ts +17 -0
- package/dist/src/network/i-key-network.d.ts.map +1 -1
- package/dist/src/network/index.d.ts +1 -0
- package/dist/src/network/index.d.ts.map +1 -1
- package/dist/src/network/index.js +1 -0
- package/dist/src/network/index.js.map +1 -1
- package/dist/src/network/stale-failure.d.ts +32 -0
- package/dist/src/network/stale-failure.d.ts.map +1 -0
- package/dist/src/network/stale-failure.js +41 -0
- package/dist/src/network/stale-failure.js.map +1 -0
- package/dist/src/network/struct.d.ts +48 -0
- package/dist/src/network/struct.d.ts.map +1 -1
- package/dist/src/network/struct.js +16 -1
- package/dist/src/network/struct.js.map +1 -1
- package/dist/src/testing/test-transactor.d.ts.map +1 -1
- package/dist/src/testing/test-transactor.js +6 -2
- package/dist/src/testing/test-transactor.js.map +1 -1
- package/dist/src/transaction/coordinator.d.ts.map +1 -1
- package/dist/src/transaction/coordinator.js +27 -15
- package/dist/src/transaction/coordinator.js.map +1 -1
- package/dist/src/transactor/network-transactor.d.ts.map +1 -1
- package/dist/src/transactor/network-transactor.js +93 -30
- package/dist/src/transactor/network-transactor.js.map +1 -1
- package/dist/src/transactor/transactor-source.d.ts.map +1 -1
- package/dist/src/transactor/transactor-source.js +9 -1
- package/dist/src/transactor/transactor-source.js.map +1 -1
- package/package.json +1 -1
- package/src/btree/btree.ts +4 -1
- package/src/cluster/structs.ts +14 -3
- package/src/collection/collection-type-registry.ts +3 -2
- package/src/collection/collection.ts +151 -28
- package/src/collection/struct.ts +38 -1
- package/src/collections/diary/diary.ts +67 -59
- package/src/collections/tree/tree.ts +63 -12
- package/src/network/i-key-network.ts +18 -0
- package/src/network/index.ts +1 -0
- package/src/network/stale-failure.ts +43 -0
- package/src/network/struct.ts +48 -0
- package/src/testing/test-transactor.ts +6 -2
- package/src/transaction/coordinator.ts +31 -15
- package/src/transactor/network-transactor.ts +97 -31
- package/src/transactor/transactor-source.ts +9 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { Log, Atomic, Tracker, copyTransforms, CacheSource, isTransformsEmpty, TransactorSource } from "../index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { BlockUnavailableError } from "../network/struct.js";
|
|
3
|
+
import { CollectionHeaderVanishedError, SyncRetryExhaustedError } from "./index.js";
|
|
3
4
|
import { clampPriority } from "../transaction/transaction.js";
|
|
4
5
|
import { ReadDependencyCollector } from "../transaction/read-dependency-collector.js";
|
|
5
6
|
import { randomBytes } from '@noble/hashes/utils.js';
|
|
6
7
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
7
8
|
import { Latches } from "../utility/latches.js";
|
|
8
9
|
import { jitteredBackoffMs, abortableDelay, makeAbortError } from "../utility/backoff.js";
|
|
10
|
+
import { createLogger } from "../logger.js";
|
|
11
|
+
const log = createLogger('collection');
|
|
9
12
|
/** Default base backoff (and historical fixed delay) between sync retries, in ms. */
|
|
10
13
|
const PendingRetryDelayMs = 100;
|
|
11
14
|
/** Default max consecutive no-progress stale-failure retries before {@link Collection.sync} gives up. */
|
|
@@ -36,7 +39,51 @@ export class Collection {
|
|
|
36
39
|
this.filterConflict = filterConflict;
|
|
37
40
|
this.latchId = `Collection:${this.id}`;
|
|
38
41
|
}
|
|
42
|
+
/** Open an EXISTING collection.
|
|
43
|
+
*
|
|
44
|
+
* Resolves to `undefined` when the header block probe comes back empty — an
|
|
45
|
+
* authoritatively absent header, meaning nothing has ever been committed under this id.
|
|
46
|
+
* A header the storage layer could not RETRIEVE (a revision this node cannot
|
|
47
|
+
* reconstruct, an unreachable cohort) is not absent: the probe throws
|
|
48
|
+
* {@link BlockUnavailableError} instead of resolving `undefined`, so an unreachable
|
|
49
|
+
* collection can never be mistaken for a nonexistent one.
|
|
50
|
+
*
|
|
51
|
+
* Use this wherever reading — not creating — is what was meant. {@link createOrOpen}
|
|
52
|
+
* would instead stage a fresh empty collection, and reads through it would report an
|
|
53
|
+
* absent dataset as a legitimately empty one. */
|
|
54
|
+
static async open(transactor, id, init) {
|
|
55
|
+
const { source, sourceCache, tracker, header } = await Collection.probeHeader(transactor, id);
|
|
56
|
+
if (!header) {
|
|
57
|
+
// Return before anything is staged: the tracker's transforms stay empty, so a caller
|
|
58
|
+
// that ignores the undefined cannot later sync a phantom collection into existence.
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
await Collection.attachToLog(source, transactor, tracker, id, header);
|
|
62
|
+
return new Collection(id, transactor, init.modules, source, sourceCache, tracker, init.filterConflict);
|
|
63
|
+
}
|
|
64
|
+
/** Open an existing collection, or stage a fresh empty one in the local tracker when the
|
|
65
|
+
* header is authoritatively absent. Nothing is written to storage until {@link sync}.
|
|
66
|
+
*
|
|
67
|
+
* Correct only where inventing a collection is genuinely intended — a first write, a
|
|
68
|
+
* bootstrap path. The create branch logs `collection:invented`; prefer {@link open} on
|
|
69
|
+
* any pure read path. */
|
|
39
70
|
static async createOrOpen(transactor, id, init) {
|
|
71
|
+
const { source, sourceCache, tracker, header } = await Collection.probeHeader(transactor, id);
|
|
72
|
+
if (header) { // Collection already exists
|
|
73
|
+
await Collection.attachToLog(source, transactor, tracker, id, header);
|
|
74
|
+
}
|
|
75
|
+
else { // Collection does not exist
|
|
76
|
+
log('collection:invented id=%s — no committed header found; staging a fresh empty collection', id);
|
|
77
|
+
const headerBlock = init.createHeaderBlock(id, tracker);
|
|
78
|
+
tracker.insert(headerBlock);
|
|
79
|
+
source.actionContext = undefined;
|
|
80
|
+
await Log.open(tracker, id);
|
|
81
|
+
}
|
|
82
|
+
return new Collection(id, transactor, init.modules, source, sourceCache, tracker, init.filterConflict);
|
|
83
|
+
}
|
|
84
|
+
/** The per-instance read wiring every open path needs, plus the header probe result.
|
|
85
|
+
* Shared by {@link open} and {@link createOrOpen} so the two cannot drift. */
|
|
86
|
+
static async probeHeader(transactor, id) {
|
|
40
87
|
// Start with a context that has an infinite revision number to ensure that we always fetch the latest log information.
|
|
41
88
|
// One shared read-dependency collector feeds both the source (direct structural reads) and the cache (every
|
|
42
89
|
// cache hit/miss), so a block read from either layer records a dependency — cache hits included.
|
|
@@ -45,20 +92,44 @@ export class Collection {
|
|
|
45
92
|
const sourceCache = new CacheSource(source, undefined, collector);
|
|
46
93
|
const tracker = new Tracker(sourceCache);
|
|
47
94
|
const header = await source.tryGet(id);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
95
|
+
return { source, sourceCache, tracker, header };
|
|
96
|
+
}
|
|
97
|
+
/** Walk an existing collection's log and point the source at its latest action context.
|
|
98
|
+
* A header we just probed successfully but whose log will not open is a fault, not an
|
|
99
|
+
* absence — throw rather than let the collection read as empty. (The re-read goes through
|
|
100
|
+
* the tracker/cache, so it can disagree with the probe when storage is flaky mid-open.) */
|
|
101
|
+
static async attachToLog(source, transactor, tracker, id, header) {
|
|
102
|
+
// Bootstrap ActionContext from the committed tail before walking the chain.
|
|
103
|
+
// This allows the transactor to serve pending non-tail blocks during Log.open.
|
|
104
|
+
await Collection.bootstrapContext(source, transactor, header);
|
|
105
|
+
const collectionLog = await Log.open(tracker, id);
|
|
106
|
+
if (!collectionLog) {
|
|
107
|
+
throw new Error(`Log not found for collection ${id}`);
|
|
54
108
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
109
|
+
// Monotonic, not an overwrite: getActionContext resolves undefined when the chain has no
|
|
110
|
+
// tail or the tail block carries zero entries, and that must not erase the revision
|
|
111
|
+
// bootstrapContext just read off the committed tail.
|
|
112
|
+
Collection.advanceContext(source, id, await collectionLog.getActionContext());
|
|
113
|
+
}
|
|
114
|
+
/** Adopt a freshly-read action context WITHOUT ever lowering the revision already held.
|
|
115
|
+
*
|
|
116
|
+
* The revision a collection last committed at is knowledge it earned; a read that found
|
|
117
|
+
* nothing — or found an older view of the log — cannot un-earn it. Silently accepting the
|
|
118
|
+
* lower value makes the next sync ask for a revision that is long gone, and every retry
|
|
119
|
+
* repeats the same doomed request because each retry re-runs the same losing read.
|
|
120
|
+
*
|
|
121
|
+
* Equal revisions still adopt `next`: the rev is unchanged but its `committed` list may be
|
|
122
|
+
* more complete than what we hold. */
|
|
123
|
+
static advanceContext(source, id, next) {
|
|
124
|
+
const current = source.actionContext;
|
|
125
|
+
if (next === undefined) {
|
|
126
|
+
return; // The read learned nothing — keep what we already know.
|
|
60
127
|
}
|
|
61
|
-
|
|
128
|
+
if (current !== undefined && next.rev < current.rev) {
|
|
129
|
+
log('collection:context-not-lowered id=%s held=%d read=%d', id, current.rev, next.rev);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
source.actionContext = next;
|
|
62
133
|
}
|
|
63
134
|
async act(...actions) {
|
|
64
135
|
const release = await Latches.acquire(this.latchId);
|
|
@@ -100,14 +171,32 @@ export class Collection {
|
|
|
100
171
|
const tracker = new Tracker(source);
|
|
101
172
|
// Bootstrap context from committed tail so pending blocks are accessible.
|
|
102
173
|
// Read through tracker so Chain.open inside Log.open reuses the cached header.
|
|
174
|
+
// A header the storage layer could not retrieve throws BlockUnavailableError out of
|
|
175
|
+
// this read (it is not a StaleFailure, so sync's retry loop does not absorb it).
|
|
103
176
|
const header = await tracker.tryGet(this.id);
|
|
104
177
|
if (header) {
|
|
105
178
|
await Collection.bootstrapContext(source, this.transactor, header);
|
|
106
179
|
}
|
|
180
|
+
else if (this.source.actionContext) {
|
|
181
|
+
// An absent header is only believable for a collection that has never committed.
|
|
182
|
+
// We hold a committed revision, so the two answers contradict each other — surface it
|
|
183
|
+
// as a fault instead of no-opping into a forgotten revision and a rev-1 retry spin.
|
|
184
|
+
// NOTE: this aborts every caller of update(), including TransactionCoordinator's
|
|
185
|
+
// blanket refresh of ALL registered collections between commit retries — a
|
|
186
|
+
// non-participant with a momentarily-absent header now fails the whole retry rather
|
|
187
|
+
// than being skipped. That is the intended loud failure; if it ever shows up as
|
|
188
|
+
// otherwise-healthy transactions aborting, narrow that refresh to the transaction's
|
|
189
|
+
// participants (see the note at coordinator.ts's update loop) rather than softening
|
|
190
|
+
// this throw.
|
|
191
|
+
throw new CollectionHeaderVanishedError(this.id, this.source.actionContext.rev);
|
|
192
|
+
}
|
|
193
|
+
// Falling through means the header is genuinely absent AND we hold no revision: nothing
|
|
194
|
+
// was ever committed under this id. Log.open reads the same block id, so it too resolves
|
|
195
|
+
// undefined and everything below no-ops — correct here, rather than a masked failure.
|
|
107
196
|
// Get the latest entries from the log, starting from where we left off
|
|
108
197
|
const actionContext = this.source.actionContext;
|
|
109
|
-
const
|
|
110
|
-
const latest =
|
|
198
|
+
const collectionLog = await Log.open(tracker, this.id);
|
|
199
|
+
const latest = collectionLog ? await collectionLog.getFrom(actionContext?.rev ?? 0) : undefined;
|
|
111
200
|
// Process the entries and track the blocks they affect
|
|
112
201
|
let anyConflicts = false;
|
|
113
202
|
for (const entry of latest?.entries ?? []) {
|
|
@@ -134,7 +223,7 @@ export class Collection {
|
|
|
134
223
|
// read — drop the reverted blocks from the read cache and replay pending work against the reverted
|
|
135
224
|
// base (docs/right-is-right.md §Client notification). De-duped across cascade children by reverted
|
|
136
225
|
// block; over-inclusive by design (over-invalidation just resubmits — it never wrongly retains).
|
|
137
|
-
const invalidations =
|
|
226
|
+
const invalidations = collectionLog ? await collectionLog.getInvalidationsFrom(actionContext?.rev ?? 0) : [];
|
|
138
227
|
if (invalidations.length > 0) {
|
|
139
228
|
const revertedBlockIds = [...new Set(invalidations.flatMap(inv => inv.reverted.map(r => r.blockId)))];
|
|
140
229
|
this.sourceCache.clear(revertedBlockIds);
|
|
@@ -146,8 +235,10 @@ export class Collection {
|
|
|
146
235
|
if (anyConflicts) {
|
|
147
236
|
await this.replayActions();
|
|
148
237
|
}
|
|
149
|
-
// Update our context to the latest
|
|
150
|
-
|
|
238
|
+
// Update our context to the latest — monotonically. An empty/unopenable log yields no
|
|
239
|
+
// context at all, and a log read that lags what we already committed yields an older one;
|
|
240
|
+
// neither is grounds for forgetting the revision we hold.
|
|
241
|
+
Collection.advanceContext(this.source, this.id, latest?.context);
|
|
151
242
|
}
|
|
152
243
|
/** Capture the current staged state — tracker transforms plus the pending
|
|
153
244
|
* action queue — so it can be restored later via {@link restorePending}.
|
|
@@ -253,13 +344,16 @@ export class Collection {
|
|
|
253
344
|
// large multi-batch sync (which iterates many times committing progress) never trips it.
|
|
254
345
|
let consecutiveFailures = 0;
|
|
255
346
|
let lastReason;
|
|
347
|
+
// Last confirmed revision a responder reported holding. Purely diagnostic — it is reported
|
|
348
|
+
// in the exhaustion error and never consulted to decide whether to keep retrying.
|
|
349
|
+
let lastStaleAt;
|
|
256
350
|
while (this.pending.length || !isTransformsEmpty(this.tracker.transforms)) {
|
|
257
351
|
if (signal?.aborted) {
|
|
258
352
|
throw makeAbortError(signal);
|
|
259
353
|
}
|
|
260
354
|
// Progress-agnostic ceiling: give up if the wall-clock deadline passed.
|
|
261
355
|
if (deadlineMs !== undefined && Date.now() - startedAt >= deadlineMs) {
|
|
262
|
-
throw new SyncRetryExhaustedError(this.id, consecutiveFailures, lastReason ?? 'deadline exceeded');
|
|
356
|
+
throw new SyncRetryExhaustedError(this.id, consecutiveFailures, lastReason ?? 'deadline exceeded', lastStaleAt);
|
|
263
357
|
}
|
|
264
358
|
// Snapshot the pending actions so that any new actions aren't assumed to be part of this action
|
|
265
359
|
const pending = [...this.pending];
|
|
@@ -267,12 +361,12 @@ export class Collection {
|
|
|
267
361
|
const snapshot = copyTransforms(this.tracker.transforms);
|
|
268
362
|
const tracker = new Tracker(this.sourceCache, snapshot);
|
|
269
363
|
// Add the action to the log (in local tracking space)
|
|
270
|
-
const
|
|
271
|
-
if (!
|
|
364
|
+
const collectionLog = await Log.open(tracker, this.id);
|
|
365
|
+
if (!collectionLog) {
|
|
272
366
|
throw new Error(`Log not found for collection ${this.id}`);
|
|
273
367
|
}
|
|
274
368
|
const newRev = (this.source.actionContext?.rev ?? 0) + 1;
|
|
275
|
-
const addResult = await
|
|
369
|
+
const addResult = await collectionLog.addActions(pending, actionId, newRev, () => tracker.transformedBlockIds());
|
|
276
370
|
// Commit the action to the transactor. Carry the aged retry priority derived from the
|
|
277
371
|
// consecutive-failure count so a sync that keeps losing concurrent races out-ranks fresh
|
|
278
372
|
// (priority-0) rivals in the cluster's resolveRace (fairness-only; capped at MaxPriority).
|
|
@@ -281,6 +375,7 @@ export class Collection {
|
|
|
281
375
|
if (staleFailure) {
|
|
282
376
|
consecutiveFailures++;
|
|
283
377
|
lastReason = staleFailure.reason ?? lastReason;
|
|
378
|
+
lastStaleAt = staleFailure.staleAt ?? lastStaleAt;
|
|
284
379
|
// Give up once the consecutive no-progress budget is exhausted, so a transactor that
|
|
285
380
|
// persistently rejects the sync can no longer hold the collection latch forever.
|
|
286
381
|
// NOTE: this also bounds the legitimate `pending`-wait case (retrying the same action
|
|
@@ -288,7 +383,7 @@ export class Collection {
|
|
|
288
383
|
// attempts ≈ 21s of exponential backoff. If a high-contention workload legitimately
|
|
289
384
|
// needs to wait longer for a pending commit to clear, raise maxAttempts for that caller.
|
|
290
385
|
if (consecutiveFailures >= maxAttempts) {
|
|
291
|
-
throw new SyncRetryExhaustedError(this.id, consecutiveFailures, lastReason);
|
|
386
|
+
throw new SyncRetryExhaustedError(this.id, consecutiveFailures, lastReason, lastStaleAt);
|
|
292
387
|
}
|
|
293
388
|
// Back off before every retry (any stale failure — reason/missing/pending), growing
|
|
294
389
|
// exponentially from the base delay up to the cap, with proportional random jitter so a
|
|
@@ -308,6 +403,7 @@ export class Collection {
|
|
|
308
403
|
// Forward progress: reset the no-progress budget.
|
|
309
404
|
consecutiveFailures = 0;
|
|
310
405
|
lastReason = undefined;
|
|
406
|
+
lastStaleAt = undefined;
|
|
311
407
|
// Clear the pending actions that were part of this action
|
|
312
408
|
this.pending = this.pending.slice(pending.length);
|
|
313
409
|
// Reset cache and replay any actions that were added during the action
|
|
@@ -331,11 +427,11 @@ export class Collection {
|
|
|
331
427
|
}
|
|
332
428
|
}
|
|
333
429
|
async *selectLog(forward = true) {
|
|
334
|
-
const
|
|
335
|
-
if (!
|
|
430
|
+
const collectionLog = await Log.open(this.tracker, this.id);
|
|
431
|
+
if (!collectionLog) {
|
|
336
432
|
throw new Error(`Log not found for collection ${this.id}`);
|
|
337
433
|
}
|
|
338
|
-
for await (const entry of
|
|
434
|
+
for await (const entry of collectionLog.select(undefined, forward)) {
|
|
339
435
|
if (entry.action) {
|
|
340
436
|
// NOTE: copy-then-reverse to avoid mutating the stored log entry array.
|
|
341
437
|
// Once tsconfig targets ES2023, `entry.action.actions.toReversed()` is cleaner.
|
|
@@ -370,12 +466,23 @@ export class Collection {
|
|
|
370
466
|
* with context=undefined. Its state.latest contains the ActionRev of the most recent
|
|
371
467
|
* committed action — exactly the proof needed for the transactor to serve pending
|
|
372
468
|
* non-tail blocks during chain walks.
|
|
469
|
+
*
|
|
470
|
+
* This read goes to the transactor directly rather than through {@link TransactorSource},
|
|
471
|
+
* so it has to honour the `unavailable` flag itself: a tail the repo could not retrieve
|
|
472
|
+
* must not degrade into "no context", which would leave the chain walk unable to see
|
|
473
|
+
* pending non-tail blocks and the collection reading as if they did not exist. A tail
|
|
474
|
+
* with no `state.latest` and NO flag is a real answer (nothing committed yet) and still
|
|
475
|
+
* no-ops.
|
|
373
476
|
*/
|
|
374
477
|
static async bootstrapContext(source, transactor, header) {
|
|
375
478
|
const tailId = header.tailId;
|
|
376
479
|
if (tailId) {
|
|
377
480
|
const tailResult = await transactor.get({ blockIds: [tailId] });
|
|
378
|
-
const
|
|
481
|
+
const tailEntry = tailResult?.[tailId];
|
|
482
|
+
if (tailEntry?.unavailable !== undefined && tailEntry.block == null) {
|
|
483
|
+
throw new BlockUnavailableError(tailId, tailEntry.unavailable);
|
|
484
|
+
}
|
|
485
|
+
const tailState = tailEntry?.state;
|
|
379
486
|
if (tailState?.latest) {
|
|
380
487
|
source.actionContext = {
|
|
381
488
|
committed: [{ actionId: tailState.latest.actionId, rev: tailState.latest.rev }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../src/collection/collection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../src/collection/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,49 @@ export declare class SyncRetryExhaustedError extends Error {
|
|
|
35
35
|
readonly collectionId: CollectionId;
|
|
36
36
|
readonly attempts: number;
|
|
37
37
|
readonly lastReason?: string | undefined;
|
|
38
|
-
|
|
38
|
+
/** The last confirmed revision a responder reported holding, if any responder reported one
|
|
39
|
+
* (see `StaleFailure.staleAt`). Absent whenever no rejection carried a confirmed number —
|
|
40
|
+
* which is normal, not a signal that the failure was something other than a lost race. */
|
|
41
|
+
readonly staleAt?: {
|
|
42
|
+
blockId: BlockId;
|
|
43
|
+
rev: number;
|
|
44
|
+
} | undefined;
|
|
45
|
+
constructor(collectionId: CollectionId, attempts: number, lastReason?: string | undefined,
|
|
46
|
+
/** The last confirmed revision a responder reported holding, if any responder reported one
|
|
47
|
+
* (see `StaleFailure.staleAt`). Absent whenever no rejection carried a confirmed number —
|
|
48
|
+
* which is normal, not a signal that the failure was something other than a lost race. */
|
|
49
|
+
staleAt?: {
|
|
50
|
+
blockId: BlockId;
|
|
51
|
+
rev: number;
|
|
52
|
+
} | undefined);
|
|
53
|
+
}
|
|
54
|
+
/** Thrown when a collection that already holds a committed revision reads its own header
|
|
55
|
+
* block as authoritatively absent.
|
|
56
|
+
*
|
|
57
|
+
* The two facts contradict each other: this client has proof that something was committed
|
|
58
|
+
* under this id (it holds the revision it committed at, or the one it read off the log tail),
|
|
59
|
+
* and storage has just answered that nothing ever was. Exactly one of them is wrong, so this
|
|
60
|
+
* is a fault rather than an absence — the same reasoning `Collection.attachToLog` applies to a
|
|
61
|
+
* header that probes fine but whose log will not open.
|
|
62
|
+
*
|
|
63
|
+
* Deliberately NOT a `StaleFailure`: {@link ICollection.sync}'s retry loop only absorbs
|
|
64
|
+
* returned stale failures, so throwing this aborts the sync immediately with a named
|
|
65
|
+
* diagnosis instead of letting it spin the full retry budget re-requesting a revision it
|
|
66
|
+
* has silently forgotten.
|
|
67
|
+
*
|
|
68
|
+
* NOTE: durable invalidation restores reverted content to its as-if-absent state, so once the
|
|
69
|
+
* cascade runs end-to-end (docs/right-is-right.md § Durable Invalidation), reverting the commit
|
|
70
|
+
* that CREATED a collection would make its header legitimately absent for a client still holding
|
|
71
|
+
* that revision — a reversal, not a contradiction, which this message would misdiagnose.
|
|
72
|
+
* Aborting is still the right action there; if it ever fires for that reason, distinguish the
|
|
73
|
+
* two by checking the log for an invalidation of the held revision before wording the error. */
|
|
74
|
+
export declare class CollectionHeaderVanishedError extends Error {
|
|
75
|
+
readonly collectionId: CollectionId;
|
|
76
|
+
/** The committed revision this collection held when the header read came back absent. */
|
|
77
|
+
readonly heldRev: number;
|
|
78
|
+
constructor(collectionId: CollectionId,
|
|
79
|
+
/** The committed revision this collection held when the header read came back absent. */
|
|
80
|
+
heldRev: number);
|
|
39
81
|
}
|
|
40
82
|
export interface ICollection<TAction> {
|
|
41
83
|
readonly id: CollectionId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../../src/collection/struct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEnE;;+EAE+E;AAC/E,MAAM,WAAW,WAAW;IAC3B;;;qBAGiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;sFACkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;gEAC4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;4BAEwB;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;2FACuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;8FAE8F;AAC9F,qBAAa,uBAAwB,SAAQ,KAAK;IAEhD,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../../src/collection/struct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEnE;;+EAE+E;AAC/E,MAAM,WAAW,WAAW;IAC3B;;;qBAGiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;sFACkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;gEAC4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;4BAEwB;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;2FACuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;8FAE8F;AAC9F,qBAAa,uBAAwB,SAAQ,KAAK;IAEhD,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAC5B;;8FAE0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;gBAN3C,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IAC5B;;8FAE0F;IACjF,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,YAAA;CAOrD;AAED;;;;;;;;;;;;;;;;;;;gGAmBgG;AAChG,qBAAa,6BAA8B,SAAQ,KAAK;IAEtD,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAFf,YAAY,EAAE,YAAY;IACnC,yFAAyF;IAChF,OAAO,EAAE,MAAM;CAMzB;AAED,MAAM,WAAW,WAAW,CAAC,OAAO;IACnC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CACrE;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IACnD,IAAI,EAAE,QAAQ,CAAC;CACf,CAAC"}
|
|
@@ -5,13 +5,53 @@ export class SyncRetryExhaustedError extends Error {
|
|
|
5
5
|
collectionId;
|
|
6
6
|
attempts;
|
|
7
7
|
lastReason;
|
|
8
|
-
|
|
8
|
+
staleAt;
|
|
9
|
+
constructor(collectionId, attempts, lastReason,
|
|
10
|
+
/** The last confirmed revision a responder reported holding, if any responder reported one
|
|
11
|
+
* (see `StaleFailure.staleAt`). Absent whenever no rejection carried a confirmed number —
|
|
12
|
+
* which is normal, not a signal that the failure was something other than a lost race. */
|
|
13
|
+
staleAt) {
|
|
9
14
|
super(`sync for collection ${collectionId} exhausted ${attempts} retries` +
|
|
10
|
-
(lastReason ? `: ${lastReason}` : '')
|
|
15
|
+
(lastReason ? `: ${lastReason}` : '') +
|
|
16
|
+
(staleAt ? `, last seen block ${staleAt.blockId} at rev ${staleAt.rev}` : ''));
|
|
11
17
|
this.collectionId = collectionId;
|
|
12
18
|
this.attempts = attempts;
|
|
13
19
|
this.lastReason = lastReason;
|
|
20
|
+
this.staleAt = staleAt;
|
|
14
21
|
this.name = 'SyncRetryExhaustedError';
|
|
15
22
|
}
|
|
16
23
|
}
|
|
24
|
+
/** Thrown when a collection that already holds a committed revision reads its own header
|
|
25
|
+
* block as authoritatively absent.
|
|
26
|
+
*
|
|
27
|
+
* The two facts contradict each other: this client has proof that something was committed
|
|
28
|
+
* under this id (it holds the revision it committed at, or the one it read off the log tail),
|
|
29
|
+
* and storage has just answered that nothing ever was. Exactly one of them is wrong, so this
|
|
30
|
+
* is a fault rather than an absence — the same reasoning `Collection.attachToLog` applies to a
|
|
31
|
+
* header that probes fine but whose log will not open.
|
|
32
|
+
*
|
|
33
|
+
* Deliberately NOT a `StaleFailure`: {@link ICollection.sync}'s retry loop only absorbs
|
|
34
|
+
* returned stale failures, so throwing this aborts the sync immediately with a named
|
|
35
|
+
* diagnosis instead of letting it spin the full retry budget re-requesting a revision it
|
|
36
|
+
* has silently forgotten.
|
|
37
|
+
*
|
|
38
|
+
* NOTE: durable invalidation restores reverted content to its as-if-absent state, so once the
|
|
39
|
+
* cascade runs end-to-end (docs/right-is-right.md § Durable Invalidation), reverting the commit
|
|
40
|
+
* that CREATED a collection would make its header legitimately absent for a client still holding
|
|
41
|
+
* that revision — a reversal, not a contradiction, which this message would misdiagnose.
|
|
42
|
+
* Aborting is still the right action there; if it ever fires for that reason, distinguish the
|
|
43
|
+
* two by checking the log for an invalidation of the held revision before wording the error. */
|
|
44
|
+
export class CollectionHeaderVanishedError extends Error {
|
|
45
|
+
collectionId;
|
|
46
|
+
heldRev;
|
|
47
|
+
constructor(collectionId,
|
|
48
|
+
/** The committed revision this collection held when the header read came back absent. */
|
|
49
|
+
heldRev) {
|
|
50
|
+
super(`collection ${collectionId} holds committed revision ${heldRev}, but its header block `
|
|
51
|
+
+ `read as absent — storage reported that nothing was ever committed under this id`);
|
|
52
|
+
this.collectionId = collectionId;
|
|
53
|
+
this.heldRev = heldRev;
|
|
54
|
+
this.name = 'CollectionHeaderVanishedError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
17
57
|
//# sourceMappingURL=struct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../../src/collection/struct.ts"],"names":[],"mappings":"AAkCA;;8FAE8F;AAC9F,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAEvC;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../../src/collection/struct.ts"],"names":[],"mappings":"AAkCA;;8FAE8F;AAC9F,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAEvC;IACA;IACA;IAIA;IAPV,YACU,YAA0B,EAC1B,QAAgB,EAChB,UAAmB;IAC5B;;8FAE0F;IACjF,OAA2C;QAEpD,KAAK,CAAC,uBAAuB,YAAY,cAAc,QAAQ,UAAU;YACxE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAVvE,iBAAY,GAAZ,YAAY,CAAc;QAC1B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAS;QAInB,YAAO,GAAP,OAAO,CAAoC;QAKpD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACvC,CAAC;CACD;AAED;;;;;;;;;;;;;;;;;;;gGAmBgG;AAChG,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAE7C;IAEA;IAHV,YACU,YAA0B;IACnC,yFAAyF;IAChF,OAAe;QAExB,KAAK,CAAC,cAAc,YAAY,6BAA6B,OAAO,yBAAyB;cAC1F,iFAAiF,CAAC,CAAC;QAL7E,iBAAY,GAAZ,YAAY,CAAc;QAE1B,YAAO,GAAP,OAAO,CAAQ;QAIxB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC7C,CAAC;CACD"}
|
|
@@ -2,7 +2,12 @@ import type { ITransactor, CollectionId } from "../../index.js";
|
|
|
2
2
|
export declare class Diary<TEntry> {
|
|
3
3
|
private readonly collection;
|
|
4
4
|
private constructor();
|
|
5
|
-
|
|
5
|
+
/** Open an existing diary, or stage a fresh empty one when nothing has ever been committed
|
|
6
|
+
* under this id. Attach-or-create — see {@link Collection.createOrOpen}. */
|
|
7
|
+
static createOrOpen<TEntry>(network: ITransactor, id: CollectionId): Promise<Diary<TEntry>>;
|
|
8
|
+
/** Open an EXISTING diary, or resolve to `undefined` when no header block has ever been
|
|
9
|
+
* committed under this id. Never brings a diary into existence — see {@link Collection.open}. */
|
|
10
|
+
static open<TEntry>(network: ITransactor, id: CollectionId): Promise<Diary<TEntry> | undefined>;
|
|
6
11
|
append(data: TEntry): Promise<void>;
|
|
7
12
|
/** Fetch the latest state from the network */
|
|
8
13
|
update(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diary.d.ts","sourceRoot":"","sources":["../../../../src/collections/diary/diary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAA8D,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"diary.d.ts","sourceRoot":"","sources":["../../../../src/collections/diary/diary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAA8D,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmB5H,qBAAa,KAAK,CAAC,MAAM;IAEtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAD1B,OAAO;IAKP;iFAC6E;WAChE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAKjG;sGACkG;WACrF,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAK/F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC,8CAA8C;IACxC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,OAAO,UAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;CAK/D"}
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
import { Collection, registerCollectionType } from "../../index.js";
|
|
2
2
|
import { DiaryHeaderBlockType } from "./struct.js";
|
|
3
|
+
/** A diary keeps every entry in the log itself, so the header block is the whole structure
|
|
4
|
+
* and the "append" handler has no blocks to touch. */
|
|
5
|
+
function diaryInit() {
|
|
6
|
+
return {
|
|
7
|
+
modules: {
|
|
8
|
+
"append": async (_action, _trx) => {
|
|
9
|
+
// Append-only diary doesn't need to modify any blocks
|
|
10
|
+
// All entries are stored in the log
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
createHeaderBlock: (id, store) => ({
|
|
14
|
+
header: store.createBlockHeader(DiaryHeaderBlockType, id)
|
|
15
|
+
})
|
|
16
|
+
};
|
|
17
|
+
}
|
|
3
18
|
export class Diary {
|
|
4
19
|
collection;
|
|
5
20
|
constructor(collection) {
|
|
6
21
|
this.collection = collection;
|
|
7
22
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// Append-only diary doesn't need to modify any blocks
|
|
13
|
-
// All entries are stored in the log
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
createHeaderBlock: (id, store) => ({
|
|
17
|
-
header: store.createBlockHeader(DiaryHeaderBlockType, id)
|
|
18
|
-
})
|
|
19
|
-
};
|
|
20
|
-
const collection = await Collection.createOrOpen(network, id, init);
|
|
23
|
+
/** Open an existing diary, or stage a fresh empty one when nothing has ever been committed
|
|
24
|
+
* under this id. Attach-or-create — see {@link Collection.createOrOpen}. */
|
|
25
|
+
static async createOrOpen(network, id) {
|
|
26
|
+
const collection = await Collection.createOrOpen(network, id, diaryInit());
|
|
21
27
|
return new Diary(collection);
|
|
22
28
|
}
|
|
29
|
+
/** Open an EXISTING diary, or resolve to `undefined` when no header block has ever been
|
|
30
|
+
* committed under this id. Never brings a diary into existence — see {@link Collection.open}. */
|
|
31
|
+
static async open(network, id) {
|
|
32
|
+
const collection = await Collection.open(network, id, diaryInit());
|
|
33
|
+
return collection ? new Diary(collection) : undefined;
|
|
34
|
+
}
|
|
23
35
|
async append(data) {
|
|
24
36
|
const action = {
|
|
25
37
|
type: "append",
|
|
@@ -41,11 +53,6 @@ export class Diary {
|
|
|
41
53
|
registerCollectionType({
|
|
42
54
|
blockType: DiaryHeaderBlockType,
|
|
43
55
|
name: "Diary",
|
|
44
|
-
|
|
45
|
-
modules: { "append": async () => { } },
|
|
46
|
-
createHeaderBlock: (hid, store) => ({
|
|
47
|
-
header: store.createBlockHeader(DiaryHeaderBlockType, hid)
|
|
48
|
-
})
|
|
49
|
-
}),
|
|
56
|
+
createOrOpen: (transactor, id) => Collection.createOrOpen(transactor, id, diaryInit()),
|
|
50
57
|
});
|
|
51
58
|
//# sourceMappingURL=diary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diary.js","sourceRoot":"","sources":["../../../../src/collections/diary/diary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,OAAO,KAAK;IAEE;IADhB,YACgB,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;IAE9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"diary.js","sourceRoot":"","sources":["../../../../src/collections/diary/diary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;uDACuD;AACvD,SAAS,SAAS;IACjB,OAAO;QACN,OAAO,EAAE;YACR,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBACjC,sDAAsD;gBACtD,oCAAoC;YACrC,CAAC;SACD;QACD,iBAAiB,EAAE,CAAC,EAAW,EAAE,KAAyB,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,EAAE,CAAC;SACzD,CAAC;KACF,CAAC;AACH,CAAC;AAED,MAAM,OAAO,KAAK;IAEE;IADhB,YACgB,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;IAE9C,CAAC;IAED;iFAC6E;IAC7E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAS,OAAoB,EAAE,EAAgB;QACpE,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAU,CAAC,CAAC;QACnF,OAAO,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;sGACkG;IAClG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAS,OAAoB,EAAE,EAAgB;QAC5D,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAU,CAAC,CAAC;QAC3E,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,MAAM,GAAmB;YAC3B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,MAAM;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI;QACxB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC;IACL,CAAC;CACJ;AAED,sBAAsB,CAAC;IACtB,SAAS,EAAE,oBAAoB;IAC/B,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,EAAW,CAAC;CAC/F,CAAC,CAAC"}
|
|
@@ -24,6 +24,13 @@ export declare class Tree<TKey, TEntry> implements TreeReadView<TKey, TEntry> {
|
|
|
24
24
|
private readonly keyFromEntry;
|
|
25
25
|
private readonly compare;
|
|
26
26
|
private constructor();
|
|
27
|
+
/** Open an EXISTING tree, or resolve to `undefined` when no header block has ever been
|
|
28
|
+
* committed under this id. Never brings a tree into existence — nothing is staged into the
|
|
29
|
+
* collection's tracker on the absent path, so a caller that ignores the `undefined` cannot
|
|
30
|
+
* later sync a phantom tree. Use on pure read paths; see {@link Collection.open}. */
|
|
31
|
+
static open<TKey, TEntry>(network: ITransactor, id: CollectionId, keyFromEntry?: (entry: TEntry) => TKey, compare?: (a: TKey, b: TKey) => 0 | 1 | -1,
|
|
32
|
+
/** See {@link Tree.createOrOpen}'s `nodeCapacity`. */
|
|
33
|
+
nodeCapacity?: number): Promise<Tree<TKey, TEntry> | undefined>;
|
|
27
34
|
static createOrOpen<TKey, TEntry>(network: ITransactor, id: CollectionId, keyFromEntry?: (entry: TEntry) => TKey, compare?: (a: TKey, b: TKey) => 0 | 1 | -1,
|
|
28
35
|
/** B-tree node fan-out. Defaults to the BTree default (64). Exposed mainly so tests can
|
|
29
36
|
* force a multi-level tree with few entries (a small capacity), which is what exercises the
|
|
@@ -37,6 +44,14 @@ export declare class Tree<TKey, TEntry> implements TreeReadView<TKey, TEntry> {
|
|
|
37
44
|
* they pass it consistently); if a persisted tree ever needs a custom fan-out, persist it in
|
|
38
45
|
* the header and read it back on reopen rather than trusting the caller to re-supply it. */
|
|
39
46
|
nodeCapacity?: number): Promise<Tree<TKey, TEntry>>;
|
|
47
|
+
/** The collection wiring both open paths share. `held` carries the read btree between the
|
|
48
|
+
* `createHeaderBlock` callback (which must build it to obtain the root id) and {@link attach}. */
|
|
49
|
+
private static buildInit;
|
|
50
|
+
/** Bind an opened collection to its read btree. On the create path `createHeaderBlock` already
|
|
51
|
+
* built one (it needed the root id for the header); on the open path it never ran, so build it
|
|
52
|
+
* over the collection's existing tracker. Either way the result is written back into `held` so
|
|
53
|
+
* the `replace` handler's path-invalidation targets the very btree reads go through. */
|
|
54
|
+
private static attach;
|
|
40
55
|
replace(data: TreeReplaceAction<TKey, TEntry>): Promise<void>;
|
|
41
56
|
/** Stage a mutation into the collection's tracker WITHOUT flushing it to the
|
|
42
57
|
* transactor. Reads through this same Tree instance see the staged change;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/collections/tree/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8B,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/H,OAAO,KAAK,EAAE,WAAW,EAA+B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAS,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI,EAAE,MAAM;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/collections/tree/tree.ts"],"names":[],"mappings":"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"}
|