@procedures/store 0.8.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 +47 -0
- package/README.md +88 -0
- 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 +84 -11
- package/dist/storage/api.d.ts.map +1 -1
- package/dist/storage/api.js +148 -25
- 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/hybrid.d.ts +367 -20
- package/dist/storage/hybrid.d.ts.map +1 -1
- package/dist/storage/hybrid.js +1295 -206
- 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 +210 -29
- package/src/storage/feed.ts +251 -0
- package/src/storage/hybrid.ts +1404 -211
- 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
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* Wraps ProcedureRegistry with storage synchronization capabilities.
|
|
5
5
|
* Enables procedure persistence and sync across backends.
|
|
6
6
|
*/
|
|
7
|
+
import { StorageListeners } from "@procedures/collections";
|
|
7
8
|
import { ProcedureRegistry } from "@procedures/client";
|
|
8
9
|
import { pathToKey } from "@procedures/client";
|
|
9
10
|
import { ProcedureStorageAdapter } from "./adapter.js";
|
|
10
11
|
import { serializeProcedure, deserializeProcedure, getSerializedKey } from "./serialization.js";
|
|
11
|
-
import { optionalMs, toMs } from "@procedures/client";
|
|
12
|
+
import { optionalMs, realClock, toMs } from "@procedures/client";
|
|
12
13
|
function hasModes(storage) {
|
|
13
14
|
const candidate = storage;
|
|
14
15
|
return typeof candidate?.setMode === "function" && typeof candidate.getMode === "function";
|
|
@@ -98,8 +99,14 @@ export class SyncedProcedureRegistry {
|
|
|
98
99
|
lastSyncTime;
|
|
99
100
|
/** Whether currently syncing */
|
|
100
101
|
syncing = false;
|
|
101
|
-
/**
|
|
102
|
-
|
|
102
|
+
/** The clock of the auto-sync */
|
|
103
|
+
clock;
|
|
104
|
+
/** The auto-sync that runs: the timer of its next sync */
|
|
105
|
+
autoSync;
|
|
106
|
+
/** The failures of the auto-sync and of the write-through writes that a later success did not clear */
|
|
107
|
+
failures = new Map();
|
|
108
|
+
/** The listeners of `onStatus()` */
|
|
109
|
+
statusListeners = new StorageListeners();
|
|
103
110
|
constructor(baseRegistry, storage, options = {}) {
|
|
104
111
|
this.baseRegistry = baseRegistry;
|
|
105
112
|
this.storage = storage;
|
|
@@ -113,6 +120,7 @@ export class SyncedProcedureRegistry {
|
|
|
113
120
|
handlerLoader: options.handlerLoader,
|
|
114
121
|
syncOnInit: options.syncOnInit ?? false,
|
|
115
122
|
};
|
|
123
|
+
this.clock = options.clock ?? realClock;
|
|
116
124
|
// The storage procedures of this registry find this wrapper
|
|
117
125
|
STORES.set(baseRegistry, this);
|
|
118
126
|
// Set up auto-sync if configured
|
|
@@ -148,10 +156,8 @@ export class SyncedProcedureRegistry {
|
|
|
148
156
|
}
|
|
149
157
|
this.pendingDeletes.delete(key);
|
|
150
158
|
if (this.options.writeStrategy === "write-through") {
|
|
151
|
-
// Write-through: persist now. flushWrites() waits for these writes.
|
|
152
|
-
this.track(this.storeRecords([registered]).
|
|
153
|
-
console.error(`Failed to persist procedure ${key}:`, err);
|
|
154
|
-
}));
|
|
159
|
+
// Write-through: persist now. flushWrites() waits for these writes. A failure goes to the status.
|
|
160
|
+
this.track(this.storeRecords([registered]).then(() => this.succeed("push"), (error) => this.fail("push", new Error(`Failed to persist procedure ${key}`, { cause: error }))));
|
|
155
161
|
}
|
|
156
162
|
else {
|
|
157
163
|
// Write-back: queue for later sync
|
|
@@ -172,9 +178,7 @@ export class SyncedProcedureRegistry {
|
|
|
172
178
|
this.pendingChanges.delete(key);
|
|
173
179
|
this.touch(key);
|
|
174
180
|
if (this.options.writeStrategy === "write-through") {
|
|
175
|
-
this.track(this.adapter.remove(path).
|
|
176
|
-
console.error(`Failed to remove procedure ${key} from storage:`, err);
|
|
177
|
-
}));
|
|
181
|
+
this.track(this.adapter.remove(path).then(() => this.succeed("push"), (error) => this.fail("push", new Error(`Failed to remove procedure ${key} from storage`, { cause: error }))));
|
|
178
182
|
}
|
|
179
183
|
else {
|
|
180
184
|
this.pendingDeletes.set(key, path);
|
|
@@ -403,9 +407,11 @@ export class SyncedProcedureRegistry {
|
|
|
403
407
|
this.stopAutoSync();
|
|
404
408
|
}
|
|
405
409
|
/**
|
|
406
|
-
* Get current sync status.
|
|
410
|
+
* Get current sync status. `error` is the newest failure of the auto-sync or of a write-through
|
|
411
|
+
* write that a later success did not clear.
|
|
407
412
|
*/
|
|
408
413
|
getStatus() {
|
|
414
|
+
const error = [...this.failures.values()].at(-1);
|
|
409
415
|
return {
|
|
410
416
|
connected: this.connected,
|
|
411
417
|
endpoint: this.endpoint,
|
|
@@ -413,8 +419,29 @@ export class SyncedProcedureRegistry {
|
|
|
413
419
|
pendingChanges: this.pendingChanges.size + this.pendingDeletes.size,
|
|
414
420
|
syncing: this.syncing,
|
|
415
421
|
mode: this.getMode(),
|
|
422
|
+
...(error !== undefined && { error }),
|
|
416
423
|
};
|
|
417
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* This method sends the status to a listener after each failure and each success of the auto-sync
|
|
427
|
+
* and of the write-through writes (roadmap CLI-13). Before, the failures went to the console.
|
|
428
|
+
*
|
|
429
|
+
* @returns The function that stops the status. A second use of it does nothing.
|
|
430
|
+
*/
|
|
431
|
+
onStatus(listener) {
|
|
432
|
+
return this.statusListeners.add(listener);
|
|
433
|
+
}
|
|
434
|
+
/** This method keeps a failure for the status, and sends the status. */
|
|
435
|
+
fail(operation, error) {
|
|
436
|
+
this.failures.delete(operation);
|
|
437
|
+
this.failures.set(operation, { operation, error });
|
|
438
|
+
this.statusListeners.emit(this.getStatus());
|
|
439
|
+
}
|
|
440
|
+
/** This method clears the failure of an operation after a success, and sends the status. */
|
|
441
|
+
succeed(operation) {
|
|
442
|
+
if (this.failures.delete(operation))
|
|
443
|
+
this.statusListeners.emit(this.getStatus());
|
|
444
|
+
}
|
|
418
445
|
// ===========================================================================
|
|
419
446
|
// The mode of the storage (roadmap R28)
|
|
420
447
|
// ===========================================================================
|
|
@@ -449,32 +476,37 @@ export class SyncedProcedureRegistry {
|
|
|
449
476
|
// A number is the internal form of the option, in milliseconds
|
|
450
477
|
const intervalMs = typeof interval === "number" ? interval : toMs(interval, "interval");
|
|
451
478
|
this.stopAutoSync();
|
|
452
|
-
const
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
const
|
|
457
|
-
.
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
this.
|
|
479
|
+
const loop = { cancel: undefined };
|
|
480
|
+
this.autoSync = loop;
|
|
481
|
+
// The next sync waits for the interval after the end of the last one: one auto-sync at a time
|
|
482
|
+
const arm = () => {
|
|
483
|
+
const cancel = this.clock.after(intervalMs, () => {
|
|
484
|
+
loop.cancel = undefined;
|
|
485
|
+
// None after close() or stopAutoSync()
|
|
486
|
+
if (this.closed || this.autoSync !== loop)
|
|
487
|
+
return;
|
|
488
|
+
const run = this.sync("both")
|
|
489
|
+
.then(() => this.succeed("sync"), (error) => this.fail("sync", error))
|
|
490
|
+
.finally(() => {
|
|
491
|
+
if (this.autoSyncRun === run)
|
|
492
|
+
this.autoSyncRun = undefined;
|
|
493
|
+
if (!this.closed && this.autoSync === loop)
|
|
494
|
+
arm();
|
|
495
|
+
});
|
|
496
|
+
this.autoSyncRun = run;
|
|
463
497
|
});
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
498
|
+
// Don't let the auto-sync timer keep the process alive. See BUGS-2026-07.md (M4).
|
|
499
|
+
cancel.unref?.();
|
|
500
|
+
loop.cancel = cancel;
|
|
501
|
+
};
|
|
502
|
+
arm();
|
|
469
503
|
}
|
|
470
504
|
/**
|
|
471
505
|
* Stop auto-sync.
|
|
472
506
|
*/
|
|
473
507
|
stopAutoSync() {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
this.syncIntervalHandle = undefined;
|
|
477
|
-
}
|
|
508
|
+
this.autoSync?.cancel?.();
|
|
509
|
+
this.autoSync = undefined;
|
|
478
510
|
}
|
|
479
511
|
// ===========================================================================
|
|
480
512
|
// Conflict Resolution
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synced-registry.js","sourceRoot":"","sources":["../../src/storage/synced-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"synced-registry.js","sourceRoot":"","sources":["../../src/storage/synced-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Enables procedure registry to be backed by CollectionStorage.
|
|
6
6
|
*/
|
|
7
7
|
import type { ProcedurePath, ProcedureMetadata } from "@procedures/client";
|
|
8
|
-
import type { Duration } from "@procedures/client";
|
|
8
|
+
import type { Clock, Duration } from "@procedures/client";
|
|
9
9
|
/**
|
|
10
10
|
* Reference to a handler that can be loaded at runtime.
|
|
11
11
|
* Handlers cannot be serialized directly, so we store a reference.
|
|
@@ -101,6 +101,21 @@ export interface SyncStatus {
|
|
|
101
101
|
syncing: boolean;
|
|
102
102
|
/** The mode of a hybrid storage (roadmap R28), or undefined for a storage without modes */
|
|
103
103
|
mode?: "local-only" | "write-through" | "write-back" | "remote-only" | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* The newest failure of the sync that a later success of the same work did not clear (roadmap
|
|
106
|
+
* CLI-13), or undefined. Before, the failures went to the console.
|
|
107
|
+
*/
|
|
108
|
+
error?: SyncError | undefined;
|
|
109
|
+
}
|
|
110
|
+
/** A failure of a sync, for its status. */
|
|
111
|
+
export interface SyncError {
|
|
112
|
+
/**
|
|
113
|
+
* The work that failed: the load of the queue, a push of the queue or of the records, a pull, a
|
|
114
|
+
* sync of both directions, or the queue store or the sync state store.
|
|
115
|
+
*/
|
|
116
|
+
readonly operation: "load" | "push" | "pull" | "sync" | "store";
|
|
117
|
+
/** The error of the work. */
|
|
118
|
+
readonly error: unknown;
|
|
104
119
|
}
|
|
105
120
|
/**
|
|
106
121
|
* Options for SyncedProcedureRegistry.
|
|
@@ -112,6 +127,12 @@ export interface SyncedRegistryOptions {
|
|
|
112
127
|
conflictResolution: ConflictResolution;
|
|
113
128
|
/** Auto-sync interval, for example `minutes(1)` (0 to disable) */
|
|
114
129
|
syncInterval?: Duration | undefined;
|
|
130
|
+
/**
|
|
131
|
+
* The clock of the auto-sync. A test gives `fakeClock` of `@mark1russell7/service/testing`. The
|
|
132
|
+
* timer does not keep a Node process alive.
|
|
133
|
+
* @default the clock of the platform (`realClock` of `@procedures/client`)
|
|
134
|
+
*/
|
|
135
|
+
clock?: Clock | undefined;
|
|
115
136
|
/** Handler loader for restoring handlers from references */
|
|
116
137
|
handlerLoader?: HandlerLoader | undefined;
|
|
117
138
|
/** Whether to sync on initialization */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@procedures/store",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.1",
|
|
5
5
|
"description": "A program store for procedure-as-data: save the programs that procedure.define makes, load them back after a restart, in memory, a JSON file, IndexedDB or a remote collection storage.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"program-store",
|
|
@@ -69,8 +69,9 @@
|
|
|
69
69
|
"procedures": "./dist/register.js"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@
|
|
73
|
-
"@procedures/
|
|
72
|
+
"@mark1russell7/service": "^0.4.1",
|
|
73
|
+
"@procedures/client": "0.8.1",
|
|
74
|
+
"@procedures/collections": "0.8.1",
|
|
74
75
|
"zod": "^4.6.5"
|
|
75
76
|
},
|
|
76
77
|
"devDependencies": {
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A sync state store in IndexedDB, for the `HybridStorage` of a browser (roadmap CLI-21).
|
|
3
|
+
*
|
|
4
|
+
* The state is in the object store `state` of one database: one record for the cursor, and one
|
|
5
|
+
* record for the base version of each id. A change writes only the records that it names, in one
|
|
6
|
+
* transaction, so a reader never sees a part of it. Give each storage its own database.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { SyncState, SyncStateChange, SyncStateStore } from "../storage/sync-state.js";
|
|
10
|
+
import { IdbStoreConnection, type IndexedDbOptions } from "./idb.js";
|
|
11
|
+
|
|
12
|
+
/** The key of the record of the cursor. The keys of the bases start with `BASE`. */
|
|
13
|
+
const CURSOR_KEY = "cursor";
|
|
14
|
+
const BASE = "base:";
|
|
15
|
+
|
|
16
|
+
/** A record of the object store. */
|
|
17
|
+
type StateRecord = { readonly kind: "cursor"; readonly cursor?: string } | { readonly kind: "base"; readonly id: string; readonly version: string | null };
|
|
18
|
+
|
|
19
|
+
/** The state of the records, or an error for a record of another form. */
|
|
20
|
+
function stateOf(records: readonly unknown[], name: string): SyncState | undefined {
|
|
21
|
+
if (records.length === 0) return undefined;
|
|
22
|
+
let cursor: string | undefined;
|
|
23
|
+
const bases: Array<[string, string | null]> = [];
|
|
24
|
+
records.forEach((value, index) => {
|
|
25
|
+
const record = value as Partial<{ kind: unknown; cursor: unknown; id: unknown; version: unknown }> | null;
|
|
26
|
+
if (record?.kind === "cursor" && (record.cursor === undefined || typeof record.cursor === "string")) {
|
|
27
|
+
cursor = record.cursor;
|
|
28
|
+
} else if (record?.kind === "base" && typeof record.id === "string" && (record.version === null || typeof record.version === "string")) {
|
|
29
|
+
bases.push([record.id, record.version]);
|
|
30
|
+
} else {
|
|
31
|
+
throw new Error(`The sync state database ${name} has a record that is not a sync state (record ${index + 1})`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return { ...(cursor !== undefined && { cursor }), bases };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A sync state store in IndexedDB.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { HybridStorage } from "@procedures/store";
|
|
43
|
+
* import { IndexedDbQueueStore, IndexedDbSyncStateStore } from "@procedures/store/indexeddb";
|
|
44
|
+
*
|
|
45
|
+
* const users = new HybridStorage(remote, {
|
|
46
|
+
* local: durableLocalCopy,
|
|
47
|
+
* queueStore: new IndexedDbQueueStore("users-queue"),
|
|
48
|
+
* syncState: new IndexedDbSyncStateStore("users-sync"),
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export class IndexedDbSyncStateStore implements SyncStateStore {
|
|
53
|
+
private readonly connection: IdbStoreConnection;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param name - The name of the database: one database for each storage. The store makes it at the first operation.
|
|
57
|
+
* @param options - The IndexedDB factory. The default is the `indexedDB` of the global scope.
|
|
58
|
+
*/
|
|
59
|
+
constructor(name: string, options: IndexedDbOptions = {}) {
|
|
60
|
+
if (typeof name !== "string" || name === "") throw new TypeError("IndexedDbSyncStateStore needs the name of a database");
|
|
61
|
+
this.connection = new IdbStoreConnection(name, "state", {}, options.indexedDB);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** The name of the database. */
|
|
65
|
+
get name(): string {
|
|
66
|
+
return this.connection.database;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
load(): Promise<SyncState | undefined> {
|
|
70
|
+
return this.connection.run("readonly", (store) => {
|
|
71
|
+
const request = store.getAll();
|
|
72
|
+
return () => stateOf(request.result, this.name);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async write(change: SyncStateChange): Promise<void> {
|
|
77
|
+
await this.connection.run("readwrite", (store) => {
|
|
78
|
+
if (change.reset) store.clear();
|
|
79
|
+
const cursor: StateRecord = change.cursor === undefined ? { kind: "cursor" } : { kind: "cursor", cursor: change.cursor };
|
|
80
|
+
store.put(cursor, CURSOR_KEY);
|
|
81
|
+
for (const [id, version] of change.bases) {
|
|
82
|
+
const record: StateRecord = { kind: "base", id, version };
|
|
83
|
+
store.put(record, BASE + id);
|
|
84
|
+
}
|
|
85
|
+
for (const id of change.forgotten) store.delete(BASE + id);
|
|
86
|
+
return () => undefined;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async clear(): Promise<void> {
|
|
91
|
+
await this.connection.run("readwrite", (store) => {
|
|
92
|
+
store.clear();
|
|
93
|
+
return () => undefined;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** This method closes the database. The state stays in it. */
|
|
98
|
+
close(): Promise<void> {
|
|
99
|
+
return this.connection.close();
|
|
100
|
+
}
|
|
101
|
+
}
|
package/src/indexeddb.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - `IndexedDbProgramStore` keeps programs in IndexedDB.
|
|
5
5
|
* - `IndexedDbQueueStore` keeps the queue of a `HybridStorage` in IndexedDB.
|
|
6
|
-
* - `
|
|
7
|
-
*
|
|
6
|
+
* - `IndexedDbSyncStateStore` keeps the sync state of a `HybridStorage` in IndexedDB: the cursor
|
|
7
|
+
* and the base versions (roadmap CLI-21).
|
|
8
|
+
* - `MemoryProgramStore`, `MemoryQueueStore` and `MemorySyncStateStore` are the fallbacks for a
|
|
9
|
+
* browser without IndexedDB. `hasIndexedDb()` tells which one to use.
|
|
8
10
|
*
|
|
9
11
|
* The package root does not import this entry, and this entry does not import the client or zod:
|
|
10
12
|
* a page that loads it gets only these stores.
|
|
@@ -12,8 +14,11 @@
|
|
|
12
14
|
|
|
13
15
|
export { IndexedDbProgramStore, DEFAULT_PROGRAM_DATABASE } from "./indexeddb/program-store.js";
|
|
14
16
|
export { IndexedDbQueueStore } from "./indexeddb/queue-store.js";
|
|
17
|
+
export { IndexedDbSyncStateStore } from "./indexeddb/sync-state-store.js";
|
|
15
18
|
export { hasIndexedDb, type IdbFactoryLike, type IndexedDbOptions } from "./indexeddb/idb.js";
|
|
16
19
|
export { MemoryProgramStore } from "./program-store/memory.js";
|
|
17
20
|
export { MemoryQueueStore } from "./storage/queue.js";
|
|
21
|
+
export { MemorySyncStateStore } from "./storage/sync-state.js";
|
|
22
|
+
export type { SyncState, SyncStateChange, SyncStateStore } from "./storage/sync-state.js";
|
|
18
23
|
export type { ProgramStore, StoredProgram } from "./program-store/types.js";
|
|
19
24
|
export type { QueuedOperation, QueueStore } from "./storage/queue.js";
|