@procedures/store 0.7.0 → 0.8.1
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/CHANGELOG.md +77 -0
- package/README.md +98 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/indexeddb/sync-state-store.d.ts +40 -0
- package/dist/indexeddb/sync-state-store.d.ts.map +1 -0
- package/dist/indexeddb/sync-state-store.js +94 -0
- package/dist/indexeddb/sync-state-store.js.map +1 -0
- package/dist/indexeddb.d.ts +7 -2
- package/dist/indexeddb.d.ts.map +1 -1
- package/dist/indexeddb.js +6 -2
- package/dist/indexeddb.js.map +1 -1
- package/dist/storage/api.d.ts +94 -11
- package/dist/storage/api.d.ts.map +1 -1
- package/dist/storage/api.js +177 -24
- package/dist/storage/api.js.map +1 -1
- package/dist/storage/feed.d.ts +133 -0
- package/dist/storage/feed.d.ts.map +1 -0
- package/dist/storage/feed.js +159 -0
- package/dist/storage/feed.js.map +1 -0
- package/dist/storage/file-queue.d.ts.map +1 -1
- package/dist/storage/file-queue.js +2 -1
- package/dist/storage/file-queue.js.map +1 -1
- package/dist/storage/hybrid.d.ts +415 -20
- package/dist/storage/hybrid.d.ts.map +1 -1
- package/dist/storage/hybrid.js +1405 -196
- package/dist/storage/hybrid.js.map +1 -1
- package/dist/storage/index.d.ts +6 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +6 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/sync-state.d.ts +56 -0
- package/dist/storage/sync-state.d.ts.map +1 -0
- package/dist/storage/sync-state.js +58 -0
- package/dist/storage/sync-state.js.map +1 -0
- package/dist/storage/synced-registry.d.ts +22 -4
- package/dist/storage/synced-registry.d.ts.map +1 -1
- package/dist/storage/synced-registry.js +63 -31
- package/dist/storage/synced-registry.js.map +1 -1
- package/dist/storage/types.d.ts +22 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/indexeddb/sync-state-store.ts +101 -0
- package/src/indexeddb.ts +7 -2
- package/src/storage/api.ts +240 -28
- package/src/storage/feed.ts +251 -0
- package/src/storage/file-queue.ts +2 -1
- package/src/storage/hybrid.ts +1526 -203
- package/src/storage/index.ts +17 -0
- package/src/storage/sync-state.ts +89 -0
- package/src/storage/synced-registry.ts +76 -31
- package/src/storage/types.ts +25 -1
package/dist/storage/hybrid.d.ts
CHANGED
|
@@ -19,11 +19,34 @@
|
|
|
19
19
|
* - Each write takes a copy of the value (`structuredClone`), for the local copy, the queue and the
|
|
20
20
|
* remote. The reads give the copies of the local copy, or of the remote in `remote-only` mode.
|
|
21
21
|
* - A full sync reads the local ids with `getIds()`, so it does not copy each local item.
|
|
22
|
+
* - A pull reads a local item only when the result depends on it. With `versionOf`, the storage
|
|
23
|
+
* knows the version of each local item that it wrote or read.
|
|
24
|
+
* - The timers run on the clock of the options. After a failed push, pull or send of the queue,
|
|
25
|
+
* the next delay grows with `backoffDelay` of `@mark1russell7/service/backoff` (roadmap CLI-13).
|
|
26
|
+
* - `getStatus()` and `onStatus()` give the state of the sync and its errors. Before, the errors
|
|
27
|
+
* went to the console.
|
|
28
|
+
* - `query()` runs a selector on the local copy, or on the remote in `remote-only` mode.
|
|
22
29
|
* - After `close()`, each operation rejects, and a second `close()` does nothing.
|
|
30
|
+
*
|
|
31
|
+
* The sync engine of roadmap CLI-21 (decision D9: a SignalDB collection is one strategy of the local copy):
|
|
32
|
+
* - `observe()` gives the batches of the changes of the storage, with their origins.
|
|
33
|
+
* - `capture: "observe"` queues the changes that the application writes to the local copy itself.
|
|
34
|
+
* - `syncState` keeps the cursor and the base versions after a reload.
|
|
35
|
+
* - `feed` pushes the remote deltas. A delta whose `since` is the cursor applies without a read.
|
|
36
|
+
* - A pull never erases a delta that came during it, and the echo of an older own write never
|
|
37
|
+
* writes over a newer local write.
|
|
38
|
+
* - The syncs of one storage run one at a time, in their order: the deltas and the hints of the
|
|
39
|
+
* feed, the pulls, the pushes, the reads after an own write, and the mode switches. Thus a
|
|
40
|
+
* remote delta and a full sync never run at the same time (Graph R18).
|
|
23
41
|
*/
|
|
24
|
-
import type { CollectionStorage, StorageMetadata } from "@procedures/collections";
|
|
25
|
-
import { type
|
|
42
|
+
import type { CollectionStorage, StorageMetadata, StorageObserver, StorageWriteOptions } from "@procedures/collections";
|
|
43
|
+
import { type ListenerErrorHandler } from "@procedures/collections";
|
|
44
|
+
import { type StorageQueryOptions, type StorageQueryPolicy, type StorageSelector } from "@procedures/client/query";
|
|
45
|
+
import { type Clock, type Duration } from "@procedures/client";
|
|
26
46
|
import { type QueueStore } from "./queue.js";
|
|
47
|
+
import type { SyncStatus } from "./types.js";
|
|
48
|
+
import type { RemoteChangeFeed } from "./feed.js";
|
|
49
|
+
import { type SyncStateStore } from "./sync-state.js";
|
|
27
50
|
/**
|
|
28
51
|
* Conflict resolution strategy.
|
|
29
52
|
*/
|
|
@@ -90,6 +113,9 @@ export interface HybridStorageOptions {
|
|
|
90
113
|
* The version of an item, for example its ETag or a revision field (roadmap R28). The sync
|
|
91
114
|
* compares the versions, not the JSON of the values. A remote change of an id with a queued
|
|
92
115
|
* local write is a conflict.
|
|
116
|
+
*
|
|
117
|
+
* The storage keeps the version of each local item that it wrote or read. A pull then reads a
|
|
118
|
+
* local item only for a conflict, or when it does not know the version of the item.
|
|
93
119
|
*/
|
|
94
120
|
versionOf?: (item: any) => string | undefined;
|
|
95
121
|
/**
|
|
@@ -142,10 +168,108 @@ export interface HybridStorageOptions {
|
|
|
142
168
|
* The storage of the local copy (roadmap R45). A durable storage, for example `SqliteStorage`
|
|
143
169
|
* of `@procedures/sqlite`, keeps the local copy after a restart. Then a new storage in
|
|
144
170
|
* `local-only` mode reads the items of the last run. Give it with a durable `queueStore`.
|
|
145
|
-
* `close()` closes it.
|
|
171
|
+
* `close()` closes it. Without `capture`, only the storage writes to the local copy: with
|
|
172
|
+
* `versionOf`, a pull does not see a write from outside.
|
|
146
173
|
* @default a new `InMemoryStorage`
|
|
147
174
|
*/
|
|
148
175
|
local?: LocalCopyStorage<any>;
|
|
176
|
+
/**
|
|
177
|
+
* The capture of the writes of the application to the local copy (roadmap CLI-21).
|
|
178
|
+
*
|
|
179
|
+
* - `"none"`: only the storage writes to the local copy.
|
|
180
|
+
* - `"observe"`: the storage observes the local copy, and it queues each change whose origin is
|
|
181
|
+
* not `origin`. The application can then write to the local copy directly, for example with
|
|
182
|
+
* the synchronous writes of a SignalDB collection. The local copy must have `observe()`.
|
|
183
|
+
*
|
|
184
|
+
* A captured change always goes in the queue, because the application made it already: the limit
|
|
185
|
+
* `maxOfflineOps` does not refuse it. In the modes `write-through` and `remote-only`, the storage
|
|
186
|
+
* sends the queue at once.
|
|
187
|
+
* @default "none"
|
|
188
|
+
*/
|
|
189
|
+
capture?: "none" | "observe";
|
|
190
|
+
/**
|
|
191
|
+
* The tag of the writes of this storage (roadmap CLI-21). Each write of the storage to the local
|
|
192
|
+
* copy and to the remote has it. Thus `capture` knows the writes of the storage, and the change
|
|
193
|
+
* events of a server tell which writes came from this storage.
|
|
194
|
+
* @default a new random tag: `hybrid-` and 8 characters
|
|
195
|
+
*/
|
|
196
|
+
origin?: string;
|
|
197
|
+
/**
|
|
198
|
+
* The origin of the changes that the sync makes in the local copy, in the batches of `observe()`:
|
|
199
|
+
* a pull, a delta of the feed, a fill after a read, a mode switch and the load of the queue.
|
|
200
|
+
* @default "sync"
|
|
201
|
+
*/
|
|
202
|
+
syncOrigin?: string;
|
|
203
|
+
/**
|
|
204
|
+
* The push feed of the remote changes, for example `EventsChangeFeed` (roadmap CLI-21, CLI-15).
|
|
205
|
+
* The storage subscribes in the modes `write-through` and `write-back`.
|
|
206
|
+
*
|
|
207
|
+
* - A delta whose `since` is the cursor applies without a read of the remote.
|
|
208
|
+
* - A delta of the version of the cursor changes nothing: a pull read it already.
|
|
209
|
+
* - Another delta, a gap, a lost event or a new subscription makes the storage pull the changes
|
|
210
|
+
* since its cursor. Many requests while a pull waits make one pull.
|
|
211
|
+
* - A delta that comes during a pull applies after the pull, so the pull does not erase it.
|
|
212
|
+
* - A hint without values (the default of the change events) makes a pull: the values come
|
|
213
|
+
* through the checks of a read. A hint with only deletes applies without a read.
|
|
214
|
+
* - The deltas, the hints, the pulls, the pushes and the mode switches run one at a time. A
|
|
215
|
+
* remote delta and a full sync never run at the same time.
|
|
216
|
+
*/
|
|
217
|
+
feed?: RemoteChangeFeed<any>;
|
|
218
|
+
/**
|
|
219
|
+
* The store of the sync state: the cursor and the base versions (roadmap CLI-21). A new storage
|
|
220
|
+
* with the same store asks the remote only for the changes since the cursor, and it finds the
|
|
221
|
+
* conflicts of the base versions. `IndexedDbSyncStateStore` of `@procedures/store/indexeddb`
|
|
222
|
+
* keeps the state in a browser.
|
|
223
|
+
*
|
|
224
|
+
* The state belongs to the local copy. The storage uses a loaded cursor only with the option
|
|
225
|
+
* `local` and a local copy that has items. Give it with a durable local copy.
|
|
226
|
+
*/
|
|
227
|
+
syncState?: SyncStateStore;
|
|
228
|
+
/**
|
|
229
|
+
* With `versionOf` or a `feed`: the time that the storage keeps the mark of an own write for its
|
|
230
|
+
* echo (roadmap CLI-21). The mark is the version, or else the JSON of the value. While a newer own
|
|
231
|
+
* write of an id waits for its echo, a remote change with the mark of an older own write is stale,
|
|
232
|
+
* and the storage does not apply it. A local delete is a tombstone: an older echo does not bring
|
|
233
|
+
* the item back. The time starts again when the write goes to the remote.
|
|
234
|
+
* @default 30 seconds
|
|
235
|
+
*/
|
|
236
|
+
echoWindow?: Duration;
|
|
237
|
+
/**
|
|
238
|
+
* The clock of the timers: the push of `write-back`, the periodic pull, and the send of the queue
|
|
239
|
+
* after a failure. A test gives `fakeClock` of `@mark1russell7/service/testing`. The timers do
|
|
240
|
+
* not keep a Node process alive.
|
|
241
|
+
* @default the clock of the platform (`realClock` of `@procedures/client`)
|
|
242
|
+
*/
|
|
243
|
+
clock?: Clock;
|
|
244
|
+
/**
|
|
245
|
+
* The growth of the delays after a failure (roadmap CLI-13). After `n` failed runs of a timer in
|
|
246
|
+
* a row, its next delay is `interval × factor^n`, at most `maxDelay`, with the random part
|
|
247
|
+
* `jitter`. A run that succeeds sets the delay back to the interval.
|
|
248
|
+
*/
|
|
249
|
+
backoff?: {
|
|
250
|
+
/** @default 2 */
|
|
251
|
+
factor?: number;
|
|
252
|
+
/** The longest backoff, for example `minutes(5)`. A timer with a longer interval uses its interval. @default 5 minutes */
|
|
253
|
+
maxDelay?: Duration;
|
|
254
|
+
/** The random part of each delay after a failure, from 0 to 1. @default 0.5 */
|
|
255
|
+
jitter?: number;
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* The random numbers of the jitter, from 0 up to 1. A test gives a fixed generator.
|
|
259
|
+
* @default Math.random
|
|
260
|
+
*/
|
|
261
|
+
random?: () => number;
|
|
262
|
+
/**
|
|
263
|
+
* The function that gets the error of a listener of `onStatus()`. The default throws the error
|
|
264
|
+
* again in a microtask.
|
|
265
|
+
*/
|
|
266
|
+
onListenerError?: ListenerErrorHandler;
|
|
267
|
+
/**
|
|
268
|
+
* The query policy of `query()` for a call without a policy. The storage gives it to the local
|
|
269
|
+
* copy, or to the remote in `remote-only` mode. The procedure `find` gives the policy of its host.
|
|
270
|
+
* @default DEFAULT_QUERY_POLICY: no `$regex`
|
|
271
|
+
*/
|
|
272
|
+
queryPolicy?: StorageQueryPolicy;
|
|
149
273
|
}
|
|
150
274
|
/**
|
|
151
275
|
* The remote did not take a write of the write-through mode. The write is in the local cache and
|
|
@@ -199,6 +323,15 @@ export declare class ModeSwitchError extends Error {
|
|
|
199
323
|
readonly code = "MODE_SWITCH_FAILED";
|
|
200
324
|
constructor(from: HybridMode, to: HybridMode, cause: unknown);
|
|
201
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* The sync state store failed (roadmap CLI-21). The storage goes on: after a failed load, the first
|
|
328
|
+
* pull reads all items, and after a failed write, the next write gives the whole state.
|
|
329
|
+
*/
|
|
330
|
+
export declare class SyncStateError extends Error {
|
|
331
|
+
readonly name = "SyncStateError";
|
|
332
|
+
readonly code = "SYNC_STATE";
|
|
333
|
+
constructor(action: "load" | "write", cause: unknown);
|
|
334
|
+
}
|
|
202
335
|
/**
|
|
203
336
|
* A storage for the local copy of a `HybridStorage` (roadmap R45): a collection storage that gives
|
|
204
337
|
* its entries. A durable one, for example `SqliteStorage` of `@procedures/sqlite`, keeps the local
|
|
@@ -249,14 +382,25 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
249
382
|
private storeDirty;
|
|
250
383
|
/** The calls of the queue store, one at a time */
|
|
251
384
|
private storeChain;
|
|
252
|
-
/** The push timer of the write-back mode */
|
|
253
|
-
private
|
|
254
|
-
/** The periodic pull */
|
|
255
|
-
private pullTimer;
|
|
385
|
+
/** The push timer of the write-back mode, or undefined without `syncInterval` */
|
|
386
|
+
private readonly pushTimer;
|
|
387
|
+
/** The periodic pull, or undefined without `pullInterval` */
|
|
388
|
+
private readonly pullTimer;
|
|
256
389
|
/** True while pushQueue sends the queue: the first operation can be on its way */
|
|
257
390
|
private pushing;
|
|
258
391
|
/** The timer that sends the queue of the write-through mode after a failure */
|
|
259
|
-
private drainTimer;
|
|
392
|
+
private readonly drainTimer;
|
|
393
|
+
/** The failures that a later success did not clear, the newest last */
|
|
394
|
+
private readonly failures;
|
|
395
|
+
/** The number of pushes and pulls that run */
|
|
396
|
+
private syncs;
|
|
397
|
+
/** The time of the last pull that succeeded (`Date.now()`) */
|
|
398
|
+
private lastSync;
|
|
399
|
+
/** The listeners of `onStatus()`, and the status that they got last */
|
|
400
|
+
private readonly statusListeners;
|
|
401
|
+
private lastStatus;
|
|
402
|
+
/** The query policy of a call without a policy */
|
|
403
|
+
private readonly queryPolicy;
|
|
260
404
|
/** The load of the queue. The writes wait for it. */
|
|
261
405
|
private readonly loaded;
|
|
262
406
|
/** The load and the first sync. The reads wait for it, so a read never sees an empty cache by mistake. */
|
|
@@ -284,8 +428,173 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
284
428
|
private changesUnsupported;
|
|
285
429
|
/** With `versionOf`: the last known remote version of each id. `null`: the remote has no item. */
|
|
286
430
|
private readonly bases;
|
|
431
|
+
/**
|
|
432
|
+
* With `versionOf`: the version of each local item that the storage wrote or read. A pull does
|
|
433
|
+
* not read an item whose version it knows. The version of an id that is not here is unknown.
|
|
434
|
+
*/
|
|
435
|
+
private readonly localVersions;
|
|
436
|
+
/** The number of the last local write of each id that runs: only that write records a version */
|
|
437
|
+
private readonly localWrites;
|
|
438
|
+
private localWriteCount;
|
|
439
|
+
/** The number of clears of the local copy: a clear cancels the records of the writes that run */
|
|
440
|
+
private localClears;
|
|
441
|
+
/** The observers of `observe()` */
|
|
442
|
+
private readonly observers;
|
|
443
|
+
/** The tag of the writes of this storage, and the write options that give it */
|
|
444
|
+
private readonly origin;
|
|
445
|
+
private readonly own;
|
|
446
|
+
/** The origin of the changes that the sync makes in the local copy */
|
|
447
|
+
private readonly syncOrigin;
|
|
448
|
+
/** The push feed, the stop of its subscription, and the number of the subscription */
|
|
449
|
+
private readonly feed;
|
|
450
|
+
private feedStop;
|
|
451
|
+
private feedToken;
|
|
452
|
+
/** True while a pull that a gap asked for waits to start */
|
|
453
|
+
private gapPull;
|
|
454
|
+
/** The stop of the capture of the local copy */
|
|
455
|
+
private readonly stopCapture;
|
|
456
|
+
/** The captured changes that came before the end of the load. Undefined after the load. */
|
|
457
|
+
private captured;
|
|
458
|
+
/** With `versionOf`: the versions of the own writes that wait for their echo */
|
|
459
|
+
private readonly echoes;
|
|
460
|
+
/** The store of the sync state, and the state of its writes */
|
|
461
|
+
private readonly stateStore;
|
|
462
|
+
private stateReset;
|
|
463
|
+
private savedCursor;
|
|
464
|
+
private stateSaving;
|
|
465
|
+
private stateAgain;
|
|
466
|
+
/** True when the application gave the local copy */
|
|
467
|
+
private readonly localGiven;
|
|
468
|
+
/**
|
|
469
|
+
* The own writes of the `write-through` mode that wait for the remote, for each id: their number
|
|
470
|
+
* and the newest value (`undefined` for a delete). A pull does not write over these ids.
|
|
471
|
+
*/
|
|
472
|
+
private readonly inFlight;
|
|
473
|
+
/** The number of own clears that wait for the remote: each id waits */
|
|
474
|
+
private inFlightClears;
|
|
475
|
+
/** The remote values that a pull did not apply because an own write of the id waited: `undefined` for a delete */
|
|
476
|
+
private readonly deferred;
|
|
477
|
+
/** The number of the last local write, of the last write of each id, and of the last clear */
|
|
478
|
+
private writeSeq;
|
|
479
|
+
private readonly lastWrite;
|
|
480
|
+
private lastClear;
|
|
287
481
|
private stats;
|
|
288
482
|
constructor(remote: CollectionStorage<T>, options?: HybridStorageOptions);
|
|
483
|
+
/**
|
|
484
|
+
* The state of the sync now (roadmap CLI-13).
|
|
485
|
+
*
|
|
486
|
+
* - `connected` is false after a remote call failed, until a remote call succeeds.
|
|
487
|
+
* - `pendingChanges` is the number of operations in the queue.
|
|
488
|
+
* - `syncing` is true while a push or a pull runs.
|
|
489
|
+
* - `lastSync` is the time (`Date.now()`) of the last pull that succeeded.
|
|
490
|
+
* - `error` is the newest failure of a load, a push, a pull or the queue store that a later
|
|
491
|
+
* success of the same work did not clear.
|
|
492
|
+
*/
|
|
493
|
+
getStatus(): SyncStatus;
|
|
494
|
+
/**
|
|
495
|
+
* This method starts to send the status to a listener at each change: a failure, a sync that
|
|
496
|
+
* starts or ends, a change of the queue, of the connection or of the mode. A failure of a timer
|
|
497
|
+
* reaches the listeners here: the storage does not write to the console.
|
|
498
|
+
*
|
|
499
|
+
* @returns The function that stops the status. A second use of it does nothing.
|
|
500
|
+
*/
|
|
501
|
+
onStatus(listener: (status: SyncStatus) => void): () => void;
|
|
502
|
+
/**
|
|
503
|
+
* This method starts to send the changes of the storage to an observer. Each write that changes
|
|
504
|
+
* the storage gives one batch, before the write resolves.
|
|
505
|
+
*
|
|
506
|
+
* - A write of this storage gives its batch with the origin of its options.
|
|
507
|
+
* - A pull, a delta of the feed, a fill after a read and a mode switch give their changes with
|
|
508
|
+
* `syncOrigin`.
|
|
509
|
+
* - With `capture: "observe"`, a write of the application to the local copy gives the batch of
|
|
510
|
+
* the local copy, with its origin.
|
|
511
|
+
* - In `remote-only` mode, the batches tell the writes of this storage to the remote.
|
|
512
|
+
*
|
|
513
|
+
* @returns The function that stops the batches. A second use of it does nothing.
|
|
514
|
+
* @throws Error after `close()`
|
|
515
|
+
*/
|
|
516
|
+
observe(observer: StorageObserver<T>): () => void;
|
|
517
|
+
/** This method sends a batch to the observers. */
|
|
518
|
+
private emit;
|
|
519
|
+
/**
|
|
520
|
+
* This method takes a batch of the local copy. The changes whose origin is not the origin of this
|
|
521
|
+
* storage come from the application: the storage queues them, and its observers get them.
|
|
522
|
+
*/
|
|
523
|
+
private onLocalChanges;
|
|
524
|
+
/**
|
|
525
|
+
* This method queues the changes of the application to the local copy (roadmap CLI-21). The
|
|
526
|
+
* operations go in the queue at once, in the order of the changes. The queue store keeps them
|
|
527
|
+
* later. A failure of the store keeps them in memory, and the status shows it.
|
|
528
|
+
*/
|
|
529
|
+
private captureChanges;
|
|
530
|
+
/**
|
|
531
|
+
* This method records a captured change as a local write: a sync that runs keeps its value, and
|
|
532
|
+
* the version of the local item is known.
|
|
533
|
+
*/
|
|
534
|
+
private noteCaptured;
|
|
535
|
+
/** This method puts a captured operation in the queue, and then in the queue store. */
|
|
536
|
+
private enqueueCaptured;
|
|
537
|
+
/**
|
|
538
|
+
* This method queues the changes that the application made during the load. The load wrote the
|
|
539
|
+
* loaded queue to the local copy, so the changes go to the local copy again, in order.
|
|
540
|
+
*/
|
|
541
|
+
private flushCaptured;
|
|
542
|
+
/**
|
|
543
|
+
* The mark of a value in the echo ledger: its version with `versionOf`, or else its JSON. A
|
|
544
|
+
* delete is `null` in the ledger: a tombstone, so an older echo does not bring the item back.
|
|
545
|
+
*/
|
|
546
|
+
private echoPrint;
|
|
547
|
+
/** This method records the versions of an own write, for its echo (roadmap CLI-21). */
|
|
548
|
+
private noteOwnWrite;
|
|
549
|
+
/** This method starts the echo time of the ids of an operation again: it goes to the remote. */
|
|
550
|
+
private echoSent;
|
|
551
|
+
/** This method subscribes to the feed in the modes with a local copy and a remote, and stops it in the others. */
|
|
552
|
+
private updateFeed;
|
|
553
|
+
/**
|
|
554
|
+
* This method takes a delta of the feed. The delta applies after the syncs that run, so a pull
|
|
555
|
+
* that runs does not erase it. Each decision about it comes when it applies, at its turn in the
|
|
556
|
+
* chain of the syncs, from the local state of that time: the queue, the own writes that wait,
|
|
557
|
+
* the echo ledger and the versions. On arrival, the storage keeps only the count of the local
|
|
558
|
+
* writes: a local write after the arrival is newer than the delta, and it keeps its value.
|
|
559
|
+
*/
|
|
560
|
+
private onRemoteChanges;
|
|
561
|
+
/**
|
|
562
|
+
* This method applies a delta of the feed: without a read when its `since` is the cursor. A
|
|
563
|
+
* delta of the version of the cursor changes nothing. Another delta is a gap: a pull.
|
|
564
|
+
*/
|
|
565
|
+
private applyFeed;
|
|
566
|
+
/**
|
|
567
|
+
* This method takes a hint of the feed: the ids that changed, without their values (roadmap
|
|
568
|
+
* CLI-15). The hint applies after the syncs that run, against the cursor and the local state of
|
|
569
|
+
* that time, as a delta does.
|
|
570
|
+
*/
|
|
571
|
+
private onRemoteHint;
|
|
572
|
+
/**
|
|
573
|
+
* This method applies a hint. A hint of the version of the cursor changes nothing. A hint whose
|
|
574
|
+
* `since` is the cursor and that changed no value applies its deletes without a read. Each other
|
|
575
|
+
* hint asks for a pull: the values come through the checks of a read of the remote, and the
|
|
576
|
+
* hints that come while the pull waits join it.
|
|
577
|
+
*/
|
|
578
|
+
private applyHint;
|
|
579
|
+
/** This method asks for a pull after the syncs that run. A request while a pull waits joins it. */
|
|
580
|
+
private requestPull;
|
|
581
|
+
/** This method loads the sync state: the bases, and the cursor that the load then examines. */
|
|
582
|
+
private loadState;
|
|
583
|
+
/**
|
|
584
|
+
* This method writes the changes of the sync state to its store: the cursor and the bases that
|
|
585
|
+
* changed. The writes run one at a time, and a change during a write goes in the next write.
|
|
586
|
+
*/
|
|
587
|
+
private saveState;
|
|
588
|
+
/** One write of the sync state. The first write, and the write after a failure, give the whole state. */
|
|
589
|
+
private writeState;
|
|
590
|
+
/** This method sends the status to the listeners when it changed. */
|
|
591
|
+
private notify;
|
|
592
|
+
/** This method keeps a failure for the status. The failure of an operation replaces its older one. */
|
|
593
|
+
private fail;
|
|
594
|
+
/** This method clears the failure of an operation after a success. */
|
|
595
|
+
private succeed;
|
|
596
|
+
/** A push or a pull: the status shows it while it runs, and keeps its failure. */
|
|
597
|
+
private track;
|
|
289
598
|
/** The mode of the storage now. */
|
|
290
599
|
getMode(): HybridMode;
|
|
291
600
|
/**
|
|
@@ -307,7 +616,11 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
307
616
|
private dropLocal;
|
|
308
617
|
/** This method makes the local copy from the queue only, before a full sync. */
|
|
309
618
|
private rebuildLocal;
|
|
310
|
-
/**
|
|
619
|
+
/**
|
|
620
|
+
* This method starts and stops the timers for the mode. The push timer runs in `write-back`, the
|
|
621
|
+
* pull timer in `write-through` and `write-back`, and the send of the queue after a failure only
|
|
622
|
+
* in `write-through`. A failed run reports its error in the status, and the next delay grows.
|
|
623
|
+
*/
|
|
311
624
|
private updateTimers;
|
|
312
625
|
/**
|
|
313
626
|
* The local item, or else the remote item (which the cache then keeps). When the remote
|
|
@@ -325,6 +638,13 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
325
638
|
*/
|
|
326
639
|
getIds(): Promise<string[]>;
|
|
327
640
|
find(predicate: (item: T) => boolean): Promise<T[]>;
|
|
641
|
+
/**
|
|
642
|
+
* The entries whose items match the selector (roadmap CLI-14): from the local copy, or from the
|
|
643
|
+
* remote in `remote-only` mode. A storage under it with `query()` runs the selector itself, for
|
|
644
|
+
* example `ApiStorage` on its server. Else this method runs `queryEntries()` on its entries. The
|
|
645
|
+
* policy of the call, or of the options, goes to the storage under it.
|
|
646
|
+
*/
|
|
647
|
+
query(selector: StorageSelector, options?: StorageQueryOptions, policy?: StorageQueryPolicy): Promise<Array<[string, T]>>;
|
|
328
648
|
has(id: string): Promise<boolean>;
|
|
329
649
|
size(): Promise<number>;
|
|
330
650
|
getBatch(ids: string[]): Promise<Map<string, T>>;
|
|
@@ -332,14 +652,15 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
332
652
|
private remoteRead;
|
|
333
653
|
/**
|
|
334
654
|
* This method sets an item. The storage takes a copy of the value, so a later change of the
|
|
335
|
-
* value does not change the local copy, the queue or the remote write.
|
|
655
|
+
* value does not change the local copy, the queue or the remote write. The origin of the options
|
|
656
|
+
* goes to the batches of `observe()`. The local copy and the remote get the origin of the storage.
|
|
336
657
|
*/
|
|
337
|
-
set(id: string, written: T): Promise<void>;
|
|
338
|
-
delete(id: string): Promise<boolean>;
|
|
339
|
-
clear(): Promise<void>;
|
|
658
|
+
set(id: string, written: T, options?: StorageWriteOptions): Promise<void>;
|
|
659
|
+
delete(id: string, options?: StorageWriteOptions): Promise<boolean>;
|
|
660
|
+
clear(options?: StorageWriteOptions): Promise<void>;
|
|
340
661
|
/** This method sets several items. The storage takes a copy of each value, as `set` does. */
|
|
341
|
-
setBatch(written: Array<[string, T]
|
|
342
|
-
deleteBatch(ids: string[]): Promise<number>;
|
|
662
|
+
setBatch(written: Array<[string, T]>, options?: StorageWriteOptions): Promise<void>;
|
|
663
|
+
deleteBatch(ids: string[], options?: StorageWriteOptions): Promise<number>;
|
|
343
664
|
/**
|
|
344
665
|
* One write, in the mode of the storage. The result is the result of the local copy, or of the
|
|
345
666
|
* remote in `remote-only` mode.
|
|
@@ -358,6 +679,34 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
358
679
|
* without a word (roadmap R2).
|
|
359
680
|
*/
|
|
360
681
|
private write;
|
|
682
|
+
/** This method records an own write of the `write-through` mode that goes to the remote. */
|
|
683
|
+
private startFlight;
|
|
684
|
+
/**
|
|
685
|
+
* This method ends an own write that went to the remote: the remote took it, or the queue or the
|
|
686
|
+
* undo replaced it. The deferred remote values of the ids that no own write waits for now go
|
|
687
|
+
* through a new read of the remote, after the syncs that run.
|
|
688
|
+
*/
|
|
689
|
+
private endFlight;
|
|
690
|
+
/** True when an own write of the id waits for the remote. */
|
|
691
|
+
private waitsForRemote;
|
|
692
|
+
/**
|
|
693
|
+
* True when a remote value of an id is the value of the newest own write that waits for the
|
|
694
|
+
* remote: its echo. `undefined` is a delete. With `versionOf` the versions decide, else the JSON.
|
|
695
|
+
*/
|
|
696
|
+
private isFlightValue;
|
|
697
|
+
/**
|
|
698
|
+
* A pull keeps the local value of an id whose own write waits for the remote, and the storage
|
|
699
|
+
* keeps the remote value for later. True when the pull defers the id. The echo of the write
|
|
700
|
+
* itself is not deferred: it is the local value.
|
|
701
|
+
*/
|
|
702
|
+
private deferIfInFlight;
|
|
703
|
+
/**
|
|
704
|
+
* This method applies the deferred remote values of ids whose own writes ended. The storage
|
|
705
|
+
* reads each id from the remote again: the deferred value can be older than the write, or a
|
|
706
|
+
* newer write of another writer. Then the rules of a pull decide. When the remote cannot answer,
|
|
707
|
+
* the deferred value goes through the rules.
|
|
708
|
+
*/
|
|
709
|
+
private applyDeferred;
|
|
361
710
|
/**
|
|
362
711
|
* The local values of the ids before a write, and a function that puts them back. It puts back
|
|
363
712
|
* only the ids that no later write changed.
|
|
@@ -394,9 +743,9 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
394
743
|
* Force a full sync (both directions).
|
|
395
744
|
*/
|
|
396
745
|
sync(): Promise<void>;
|
|
397
|
-
/** The pull of `syncFromRemote()`, after the syncs that run. */
|
|
746
|
+
/** The pull of `syncFromRemote()`, after the syncs that run. The status keeps its failure. */
|
|
398
747
|
private pull;
|
|
399
|
-
/** The push of `syncToRemote()`, after the syncs that run. */
|
|
748
|
+
/** The push of `syncToRemote()`, after the syncs that run. The status keeps its failure. */
|
|
400
749
|
private push;
|
|
401
750
|
/** The error of an operation after `close()`. */
|
|
402
751
|
private closedError;
|
|
@@ -431,8 +780,35 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
431
780
|
private loadQueue;
|
|
432
781
|
/** The first sync: send the loaded queue, then read the remote. */
|
|
433
782
|
private initialSync;
|
|
434
|
-
/** This method applies a queued operation to the local copy. */
|
|
783
|
+
/** This method applies a queued operation to the local copy. The observers get the origin. */
|
|
435
784
|
private applyToLocal;
|
|
785
|
+
/**
|
|
786
|
+
* This method writes to the local copy. With `versionOf`, it records the version of each item
|
|
787
|
+
* that the write gives, so a pull does not read the item to know its version.
|
|
788
|
+
*
|
|
789
|
+
* - During the write, the versions of its ids are unknown. A failed write keeps them unknown.
|
|
790
|
+
* - Only the last write of an id that started records its version, and a clear that started
|
|
791
|
+
* after the write cancels the record.
|
|
792
|
+
*/
|
|
793
|
+
private writeLocal;
|
|
794
|
+
/** The write of `writeLocal` with `versionOf`. */
|
|
795
|
+
private recordedWrite;
|
|
796
|
+
/**
|
|
797
|
+
* This method reads a local item for a pull. With `versionOf`, it records the version of the item
|
|
798
|
+
* when no local write started or ran during the read.
|
|
799
|
+
*/
|
|
800
|
+
private readLocal;
|
|
801
|
+
/** The version of an item for the record of the local copy, or undefined when `versionOf` fails. */
|
|
802
|
+
private recordedVersion;
|
|
803
|
+
private localSet;
|
|
804
|
+
private localDelete;
|
|
805
|
+
private localSetBatch;
|
|
806
|
+
private localDeleteBatch;
|
|
807
|
+
private localClear;
|
|
808
|
+
/** A clear of the local copy with observers: they get the change when the copy had items. */
|
|
809
|
+
private observedClear;
|
|
810
|
+
/** The ids that a delete of the `remote-only` mode finds, for its batch. */
|
|
811
|
+
private remoteExisting;
|
|
436
812
|
/**
|
|
437
813
|
* One pull. `full`: ask for all items (after the local copy was dropped).
|
|
438
814
|
*
|
|
@@ -441,12 +817,27 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
441
817
|
* comes again at the next pull.
|
|
442
818
|
*/
|
|
443
819
|
private pullRemote;
|
|
820
|
+
/**
|
|
821
|
+
* This method applies remote changes to the local copy: the changes of a pull, or a delta of
|
|
822
|
+
* the feed. `changedLocally` tells the ids that a local write changed after the changes left the
|
|
823
|
+
* remote: they keep their local values. The cursor moves only without conflicts.
|
|
824
|
+
*/
|
|
825
|
+
private applyChanges;
|
|
444
826
|
/**
|
|
445
827
|
* The remote changes: since the cursor from `getChangesSince` when the remote has it, or else
|
|
446
828
|
* all entries.
|
|
447
829
|
*/
|
|
448
830
|
private fetchChanges;
|
|
449
|
-
/**
|
|
831
|
+
/**
|
|
832
|
+
* This method applies one remote item. It gives true when the queue changed.
|
|
833
|
+
*
|
|
834
|
+
* The pull reads the local item only when the result depends on it (roadmap R28):
|
|
835
|
+
* - An id with a queued write: only when the remote version changed after the last known remote
|
|
836
|
+
* version. Without versions, the queued write wins, and the pull reads nothing.
|
|
837
|
+
* - An id without a queued write: not when the storage knows the version of the local item.
|
|
838
|
+
* Without versions, the pull compares the JSON of the two items, so it reads the local item.
|
|
839
|
+
* Before, the pull read each local item.
|
|
840
|
+
*/
|
|
450
841
|
private pullItem;
|
|
451
842
|
/** This method applies one remote delete. It gives true when the queue changed. */
|
|
452
843
|
private pullDelete;
|
|
@@ -479,6 +870,10 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
479
870
|
/** Run syncs one at a time. */
|
|
480
871
|
private serialize;
|
|
481
872
|
private bump;
|
|
873
|
+
/** A local clear: each id changed. */
|
|
874
|
+
private bumpClear;
|
|
875
|
+
/** True when a local write changed the id after the mark, a value of `writeSeq`. */
|
|
876
|
+
private changedSince;
|
|
482
877
|
/** The count of local writes of an id: it changes with each write and each clear. */
|
|
483
878
|
private writeKey;
|
|
484
879
|
private versionOfItem;
|
|
@@ -529,7 +924,7 @@ export declare class HybridStorage<T> implements CollectionStorage<T> {
|
|
|
529
924
|
private ensureQueueRoom;
|
|
530
925
|
/**
|
|
531
926
|
* In write-through mode, a timer sends the queue after a failure, and again after each failed
|
|
532
|
-
* send, until the queue is empty.
|
|
927
|
+
* send, until the queue is empty. The delay after a failed send grows with the backoff.
|
|
533
928
|
*/
|
|
534
929
|
private scheduleDrain;
|
|
535
930
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/storage/hybrid.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/storage/hybrid.ts"],"names":[],"mappings":"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"}
|