@interocitor/core 0.0.0-beta.3 → 0.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +446 -91
  2. package/dist/adapters/cloudflare.d.ts +8 -9
  3. package/dist/adapters/cloudflare.d.ts.map +1 -1
  4. package/dist/adapters/cloudflare.js +38 -12
  5. package/dist/adapters/google-drive.d.ts +1 -1
  6. package/dist/adapters/google-drive.js +1 -2
  7. package/dist/adapters/memory.d.ts +4 -1
  8. package/dist/adapters/memory.d.ts.map +1 -1
  9. package/dist/adapters/memory.js +13 -2
  10. package/dist/adapters/webdav.d.ts +5 -0
  11. package/dist/adapters/webdav.d.ts.map +1 -1
  12. package/dist/adapters/webdav.js +18 -1
  13. package/dist/core/codec.d.ts +1 -1
  14. package/dist/core/codec.d.ts.map +1 -1
  15. package/dist/core/codec.js +39 -3
  16. package/dist/core/compaction.d.ts +9 -1
  17. package/dist/core/compaction.d.ts.map +1 -1
  18. package/dist/core/compaction.js +63 -7
  19. package/dist/core/crdt.d.ts +6 -3
  20. package/dist/core/crdt.d.ts.map +1 -1
  21. package/dist/core/crdt.js +53 -67
  22. package/dist/core/errors.d.ts +47 -0
  23. package/dist/core/errors.d.ts.map +1 -0
  24. package/dist/core/errors.js +61 -0
  25. package/dist/core/flush.d.ts +3 -3
  26. package/dist/core/flush.d.ts.map +1 -1
  27. package/dist/core/flush.js +64 -7
  28. package/dist/core/hlc.js +0 -1
  29. package/dist/core/ids.d.ts +49 -0
  30. package/dist/core/ids.d.ts.map +1 -0
  31. package/dist/core/ids.js +132 -0
  32. package/dist/core/internals.d.ts +10 -2
  33. package/dist/core/internals.d.ts.map +1 -1
  34. package/dist/core/internals.js +27 -9
  35. package/dist/core/manifest.d.ts +24 -5
  36. package/dist/core/manifest.d.ts.map +1 -1
  37. package/dist/core/manifest.js +80 -13
  38. package/dist/core/pull.d.ts +1 -1
  39. package/dist/core/pull.d.ts.map +1 -1
  40. package/dist/core/pull.js +21 -6
  41. package/dist/core/row-id.js +0 -1
  42. package/dist/core/schema-types.d.ts +22 -11
  43. package/dist/core/schema-types.d.ts.map +1 -1
  44. package/dist/core/schema-types.js +18 -9
  45. package/dist/core/schema-types.type-test.js +59 -5
  46. package/dist/core/sync-engine.d.ts +166 -12
  47. package/dist/core/sync-engine.d.ts.map +1 -1
  48. package/dist/core/sync-engine.js +1615 -219
  49. package/dist/core/table.d.ts +217 -17
  50. package/dist/core/table.d.ts.map +1 -1
  51. package/dist/core/table.js +376 -24
  52. package/dist/core/types.d.ts +413 -17
  53. package/dist/core/types.d.ts.map +1 -1
  54. package/dist/core/types.js +0 -1
  55. package/dist/crypto/encryption.d.ts.map +1 -1
  56. package/dist/crypto/encryption.js +6 -1
  57. package/dist/crypto/keys.js +0 -1
  58. package/dist/handshake/channel.js +0 -1
  59. package/dist/handshake/index.d.ts +5 -2
  60. package/dist/handshake/index.d.ts.map +1 -1
  61. package/dist/handshake/index.js +19 -2
  62. package/dist/handshake/qr.js +0 -1
  63. package/dist/index.d.ts +9 -7
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +8 -6
  66. package/dist/storage/credential-store.d.ts +25 -2
  67. package/dist/storage/credential-store.d.ts.map +1 -1
  68. package/dist/storage/credential-store.js +55 -8
  69. package/dist/storage/local-store.d.ts +4 -1
  70. package/dist/storage/local-store.d.ts.map +1 -1
  71. package/dist/storage/local-store.js +37 -21
  72. package/package.json +3 -3
  73. package/dist/adapters/cloudflare.js.map +0 -1
  74. package/dist/adapters/google-drive.js.map +0 -1
  75. package/dist/adapters/memory.js.map +0 -1
  76. package/dist/adapters/webdav.js.map +0 -1
  77. package/dist/core/codec.js.map +0 -1
  78. package/dist/core/compaction.js.map +0 -1
  79. package/dist/core/crdt.js.map +0 -1
  80. package/dist/core/flush.js.map +0 -1
  81. package/dist/core/hlc.js.map +0 -1
  82. package/dist/core/internals.js.map +0 -1
  83. package/dist/core/manifest.js.map +0 -1
  84. package/dist/core/pull.js.map +0 -1
  85. package/dist/core/row-id.js.map +0 -1
  86. package/dist/core/schema-types.js.map +0 -1
  87. package/dist/core/schema-types.type-test.js.map +0 -1
  88. package/dist/core/sync-engine.js.map +0 -1
  89. package/dist/core/table.js.map +0 -1
  90. package/dist/core/types.js.map +0 -1
  91. package/dist/crypto/encryption.js.map +0 -1
  92. package/dist/crypto/keys.js.map +0 -1
  93. package/dist/handshake/channel.js.map +0 -1
  94. package/dist/handshake/index.js.map +0 -1
  95. package/dist/handshake/qr.js.map +0 -1
  96. package/dist/index.js.map +0 -1
  97. package/dist/storage/credential-store.js.map +0 -1
  98. package/dist/storage/local-store.js.map +0 -1
@@ -9,26 +9,43 @@
9
9
  * Network is never required for reads or local writes.
10
10
  * All data operations hit IndexedDB first; cloud sync is async.
11
11
  */
12
- import type { StorageAdapter, SyncConfig, LocalStoreAdapter, Manifest, SyncEventListener, WhereClause } from './types.ts';
12
+ import type { StorageAdapter, SyncConfig, LocalStoreAdapter, Manifest, Row, SyncEventListener, WhereClause, SyncInitialState, QueryDescriptor, QueryExecutionOptions, QueryCacheSnapshot, ReadinessAwareQueryExecutor, RowDescriptor, RowCacheSnapshot } from './types.ts';
13
13
  import { Table } from './table.ts';
14
14
  /**
15
15
  * Typed sync engine. `S` is your database shape — inferred automatically
16
16
  * from `InferSchemaType<typeof schema>`. No default: either typed or `any`.
17
17
  *
18
+ * Initialization is automatic — just construct and use. No `await engine.init()` needed.
19
+ *
18
20
  * @example
19
21
  * const schema = { version: 1, tables: { tasks: { fields: { title: types.string } } } }
20
22
  * satisfies DatabaseSchemaDefinition;
21
23
  *
22
24
  * type DB = InferSchemaType<typeof schema>;
23
- * const engine = new SyncEngine<DB>(adapter, { schema, remotePath: '/App', appName: 'App' });
24
25
  *
25
- * // Or declare a typed getter:
26
- * const getDb = async (): Promise<SyncEngine<DB>> => { ... }
26
+ * // Local-only (no adapter):
27
+ * const db = new Interocitor<DB>({ schema, dbName: 'myapp', appName: 'My App' });
28
+ * const tasks = await db.table('tasks').query(); // ready immediately
29
+ *
30
+ * // With remote sync:
31
+ * const db = new Interocitor<DB>(adapter, { schema, remotePath: '/App', appName: 'App' });
32
+ * await db.connect(); // authenticate + sync
27
33
  *
28
- * engine.table('tasks'); // Table<{ title: string }>
29
- * engine.table('other'); // TS error — 'other' is not keyof DB
34
+ * db.table('other'); // TS error 'other' is not keyof DB
30
35
  */
31
- export declare class SyncEngine<S extends Record<string, Record<string, unknown>>> {
36
+ export interface InterocitorInitContext<S extends Record<string, Record<string, unknown>>> extends ReadinessAwareQueryExecutor {
37
+ put<K extends keyof S & string>(table: K, rowId: string, columns: Partial<S[K]>, userId?: string): Promise<S[K]>;
38
+ delete<K extends keyof S & string>(table: K, rowId: string, userId?: string): Promise<void>;
39
+ query<K extends keyof S & string>(table: K): Promise<S[K][]>;
40
+ queryWhere<K extends keyof S & string>(table: K, clause: WhereClause): Promise<S[K][]>;
41
+ table<K extends keyof S & string>(name: K): Table<S[K]>;
42
+ on(listener: SyncEventListener): () => void;
43
+ getDeviceId(): string;
44
+ getMeshId(): string | undefined;
45
+ isEncrypted(): boolean;
46
+ }
47
+ export declare class Interocitor<S extends Record<string, Record<string, unknown>>> implements ReadinessAwareQueryExecutor {
48
+ readonly InitContext: InterocitorInitContext<S>;
32
49
  private adapter;
33
50
  private config;
34
51
  private serverId;
@@ -44,12 +61,28 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
44
61
  private knownTables;
45
62
  private flushTimer;
46
63
  private pendingCount;
64
+ private compactWarningEmitted;
65
+ private compactInFlight;
66
+ private compactScheduleVersion;
67
+ private compactCheckTimer;
68
+ private compactRunTimer;
69
+ private batchTimer;
70
+ private pendingBatch;
47
71
  private pollTimer;
72
+ private unsubscribeRemoteInvalidations;
48
73
  private initialized;
49
74
  private connected;
75
+ private initPromise;
76
+ private connectPromise;
77
+ private readonly logLevel;
50
78
  private listeners;
51
79
  private readonly schema?;
52
80
  private readonly credentialStore;
81
+ private readonly dbName;
82
+ private queryCache;
83
+ private queryCacheByTable;
84
+ private rowCache;
85
+ private rowCacheByTable;
53
86
  /**
54
87
  * Create a sync engine.
55
88
  *
@@ -61,31 +94,109 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
61
94
  * config — no manual type parameter needed:
62
95
  *
63
96
  * @example
64
- * const engine = new SyncEngine(adapter, { schema, remotePath: '/App', appName: 'App' });
97
+ * const engine = new Interocitor(adapter, { schema, remotePath: '/App', appName: 'App' });
65
98
  * const tasks = engine.table('tasks'); // Table<{ title: string; status: 'open' | 'done' }>
66
99
  */
67
100
  constructor(config: SyncConfig<S>);
68
101
  constructor(adapter: StorageAdapter | null, config: SyncConfig<S>);
102
+ private log;
103
+ private supportsRemoteInvalidations;
104
+ /** Await this before any storage operation. Returns the shared init promise. */
105
+ private ensureReady;
106
+ private putNow;
107
+ private deleteNow;
108
+ /**
109
+ * Append the op to the in-flight batch. If we are inside a `batch()` block,
110
+ * the op stays buffered until the block ends. Otherwise it joins an
111
+ * implicit window of `batchWindowMs`. Either way the result is one
112
+ * ChangeEntry per batch instead of one per write.
113
+ */
114
+ private queueOpForBatchedFlush;
115
+ private queryNow;
116
+ private queryWhereNow;
117
+ /** Public readiness signal. Used by render-time consumers to decide
118
+ * between sync cache reads and awaiting a load. */
119
+ isReady(): boolean;
120
+ /** Stable cache key for a descriptor. Owned by core. */
121
+ getQueryCacheKey(descriptor: QueryDescriptor): string;
122
+ /** Sync cache snapshot. Never starts a load. Empty/pending/ready/error. */
123
+ readQueryCache(descriptor: QueryDescriptor): QueryCacheSnapshot;
124
+ /**
125
+ * Load rows through the cache.
126
+ *
127
+ * - If a snapshot exists and `bypassCache` is not set, dedupes to the
128
+ * in-flight promise (when pending) or starts a refresh that keeps the
129
+ * stale rows visible until it resolves.
130
+ * - When the engine is not yet ready, falls through `ensureReady()`; if
131
+ * `bypassCache` is set, never returns the cached rows.
132
+ */
133
+ loadQueryRows(descriptor: QueryDescriptor, options?: QueryExecutionOptions): Promise<Row[]>;
134
+ private runQuery;
135
+ private indexCacheByTable;
136
+ /**
137
+ * Mark all cached queries against `table` as stale and refresh them in the
138
+ * background. Stale rows stay visible. Called from local mutations.
139
+ */
140
+ private invalidateQueryCacheForTable;
141
+ /** Stable cache key for a row descriptor. Owned by core. */
142
+ getRowCacheKey(descriptor: RowDescriptor): string;
143
+ /** Sync row cache snapshot. Never starts a load. */
144
+ readRowCache(descriptor: RowDescriptor): RowCacheSnapshot;
145
+ /**
146
+ * Load a row through the cache. Same dedupe + stale-while-revalidate
147
+ * semantics as `loadQueryRows`.
148
+ */
149
+ loadRow(descriptor: RowDescriptor, options?: QueryExecutionOptions): Promise<Row | undefined>;
150
+ private runRow;
151
+ private indexRowCacheByTable;
152
+ /**
153
+ * Refresh all cached rows for a table. Called from emit() alongside the
154
+ * query cache invalidation. Keeps prior row visible while in-flight.
155
+ *
156
+ * Table-wide invalidation is intentional: Interocitor targets rare-update
157
+ * workloads, not realtime state streams. The over-fetch on a write is a
158
+ * fixed-cost reload of cached rows for that one table — cheap, simple,
159
+ * and matches the query cache strategy. Finer-grained per-rowId
160
+ * invalidation can be added later without changing this contract.
161
+ */
162
+ private invalidateRowCacheForTable;
163
+ private get initContext();
69
164
  private requireAdapter;
165
+ private requireRemotePath;
166
+ private rebuildOutboxFromLocalState;
70
167
  private get codecState();
71
168
  private get manifestContext();
169
+ private acknowledgeManifest;
72
170
  private clearScheduledFlush;
171
+ private clearCompactTimers;
172
+ private jitterDelay;
73
173
  private stopPolling;
74
174
  private startPolling;
75
- private resetRemoteSyncState;
175
+ private stopRemoteInvalidations;
176
+ private startRemoteInvalidations;
76
177
  private getRowHlc;
77
178
  private rowToSyncOp;
78
- private buildChangeEntry;
79
- private rebuildOutboxFromLocalState;
80
179
  private loadLocalState;
81
180
  private ensureRowsCached;
82
181
  private poisonRemote;
83
182
  on(listener: SyncEventListener): () => void;
84
183
  private emit;
85
184
  private persistCredentials;
185
+ /**
186
+ * Compare the persisted credential record against the live meshId.
187
+ *
188
+ * Throws `MeshCredentialMismatchError` (and emits `credentials:meshMismatch`)
189
+ * when the credential store has a record under this `dbName` whose meshId
190
+ * disagrees with `manifest.meshId`. The remote is NOT poisoned — the local
191
+ * credential store has stale data from a previous mesh that shared the
192
+ * same dbName.
193
+ */
194
+ private assertCredentialMeshParity;
86
195
  private loadPersistedCredentials;
87
196
  private clearPersistedCredentials;
88
197
  private resolveEncryption;
198
+ private applyInitialState;
199
+ configureMesh(state: SyncInitialState): void;
89
200
  /**
90
201
  * Set the mesh encryption passphrase.
91
202
  * Call before init() or between disconnect() and init().
@@ -126,25 +237,68 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
126
237
  */
127
238
  setEncryptionKey(key: CryptoKey): void;
128
239
  init(): Promise<void>;
240
+ private doInit;
129
241
  /**
130
242
  * Silent credential restore from the primary store only.
131
243
  * Used during normal init(). No biometric prompt.
132
244
  */
133
245
  private restoreCredentials;
134
246
  connect(): Promise<void>;
247
+ private tryConnectFastPath;
248
+ private doConnect;
135
249
  disconnect(): Promise<void>;
136
250
  setRemoteStorage(adapter: StorageAdapter | null): Promise<void>;
137
251
  setLocalStorage(local: LocalStoreAdapter): Promise<void>;
252
+ /**
253
+ * Load the mesh manifest, optionally short-circuiting via the in-memory
254
+ * cache.
255
+ *
256
+ * `reason` is a free-form caller tag used by `trace:manifest` events so
257
+ * developers can answer "why is my manifest being re-read every flush?".
258
+ *
259
+ * `force=true` bypasses the cache. Required after poison, after compaction
260
+ * advances generation, or whenever the caller explicitly needs disk state.
261
+ * Cached path emits `trace:manifest { op: 'cache-hit' }` so test/devtools
262
+ * can assert that the steady-state pipeline does ZERO GETs on flush/pull.
263
+ */
264
+ /**
265
+ * Returns whether the manifest was bootstrapped (freshly minted) on this
266
+ * call. Callers (connect()) use this to skip the device-metadata GET when
267
+ * we know no prior device record can exist.
268
+ */
138
269
  private doLoadOrCreateManifest;
139
270
  put<K extends keyof S & string>(table: K, rowId: string, columns: Partial<S[K]>, userId?: string): Promise<S[K]>;
140
271
  delete<K extends keyof S & string>(table: K, rowId: string, userId?: string): Promise<void>;
141
- get<K extends keyof S & string>(table: K, rowId: string): Promise<S[K] | undefined>;
142
272
  query<K extends keyof S & string>(table: K): Promise<S[K][]>;
143
273
  queryWhere<K extends keyof S & string>(table: K, clause: WhereClause): Promise<S[K][]>;
144
274
  tableNames(): Promise<string[]>;
145
275
  table<K extends keyof S & string>(name: K): Table<S[K]>;
276
+ private batchDepth;
277
+ /**
278
+ * Group a sequence of writes into a single ChangeEntry. The entry
279
+ * carries every op as one atomic unit, producing one remote file
280
+ * instead of one per write.
281
+ *
282
+ * Nested batch() calls join the outer batch.
283
+ */
284
+ batch<R>(fn: () => Promise<R> | R): Promise<R>;
285
+ private isBatching;
286
+ private clearBatchTimer;
287
+ private appendOpToPendingBatch;
288
+ private armImplicitBatchTimer;
289
+ private flushPendingBatch;
146
290
  private scheduleFlush;
291
+ private maybeEmitCompactWarning;
292
+ private resetCompactWarning;
293
+ private maybeAutoCompact;
294
+ private armDelayedCompactAfterChange;
295
+ private runDelayedCompactCheck;
296
+ private runDelayedCompact;
297
+ /** Public flush — waits for init. Safe to call from user code. */
147
298
  flush(): Promise<void>;
299
+ /** Internal flush — no ensureReady guard (called from connect, pull, doInit). */
300
+ private hasPreFloorEntries;
301
+ private doFlush;
148
302
  pull(): Promise<void>;
149
303
  rehydrate(): Promise<void>;
150
304
  compact(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"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"}