@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.
- package/README.md +446 -91
- package/dist/adapters/cloudflare.d.ts +8 -9
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +38 -12
- package/dist/adapters/google-drive.d.ts +1 -1
- package/dist/adapters/google-drive.js +1 -2
- package/dist/adapters/memory.d.ts +4 -1
- package/dist/adapters/memory.d.ts.map +1 -1
- package/dist/adapters/memory.js +13 -2
- package/dist/adapters/webdav.d.ts +5 -0
- package/dist/adapters/webdav.d.ts.map +1 -1
- package/dist/adapters/webdav.js +18 -1
- package/dist/core/codec.d.ts +1 -1
- package/dist/core/codec.d.ts.map +1 -1
- package/dist/core/codec.js +39 -3
- package/dist/core/compaction.d.ts +9 -1
- package/dist/core/compaction.d.ts.map +1 -1
- package/dist/core/compaction.js +63 -7
- package/dist/core/crdt.d.ts +6 -3
- package/dist/core/crdt.d.ts.map +1 -1
- package/dist/core/crdt.js +53 -67
- package/dist/core/errors.d.ts +47 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +61 -0
- package/dist/core/flush.d.ts +3 -3
- package/dist/core/flush.d.ts.map +1 -1
- package/dist/core/flush.js +64 -7
- package/dist/core/hlc.js +0 -1
- package/dist/core/ids.d.ts +49 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +132 -0
- package/dist/core/internals.d.ts +10 -2
- package/dist/core/internals.d.ts.map +1 -1
- package/dist/core/internals.js +27 -9
- package/dist/core/manifest.d.ts +24 -5
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +80 -13
- package/dist/core/pull.d.ts +1 -1
- package/dist/core/pull.d.ts.map +1 -1
- package/dist/core/pull.js +21 -6
- package/dist/core/row-id.js +0 -1
- package/dist/core/schema-types.d.ts +22 -11
- package/dist/core/schema-types.d.ts.map +1 -1
- package/dist/core/schema-types.js +18 -9
- package/dist/core/schema-types.type-test.js +59 -5
- package/dist/core/sync-engine.d.ts +166 -12
- package/dist/core/sync-engine.d.ts.map +1 -1
- package/dist/core/sync-engine.js +1615 -219
- package/dist/core/table.d.ts +217 -17
- package/dist/core/table.d.ts.map +1 -1
- package/dist/core/table.js +376 -24
- package/dist/core/types.d.ts +413 -17
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +0 -1
- package/dist/crypto/encryption.d.ts.map +1 -1
- package/dist/crypto/encryption.js +6 -1
- package/dist/crypto/keys.js +0 -1
- package/dist/handshake/channel.js +0 -1
- package/dist/handshake/index.d.ts +5 -2
- package/dist/handshake/index.d.ts.map +1 -1
- package/dist/handshake/index.js +19 -2
- package/dist/handshake/qr.js +0 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -6
- package/dist/storage/credential-store.d.ts +25 -2
- package/dist/storage/credential-store.d.ts.map +1 -1
- package/dist/storage/credential-store.js +55 -8
- package/dist/storage/local-store.d.ts +4 -1
- package/dist/storage/local-store.d.ts.map +1 -1
- package/dist/storage/local-store.js +37 -21
- package/package.json +3 -3
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/adapters/google-drive.js.map +0 -1
- package/dist/adapters/memory.js.map +0 -1
- package/dist/adapters/webdav.js.map +0 -1
- package/dist/core/codec.js.map +0 -1
- package/dist/core/compaction.js.map +0 -1
- package/dist/core/crdt.js.map +0 -1
- package/dist/core/flush.js.map +0 -1
- package/dist/core/hlc.js.map +0 -1
- package/dist/core/internals.js.map +0 -1
- package/dist/core/manifest.js.map +0 -1
- package/dist/core/pull.js.map +0 -1
- package/dist/core/row-id.js.map +0 -1
- package/dist/core/schema-types.js.map +0 -1
- package/dist/core/schema-types.type-test.js.map +0 -1
- package/dist/core/sync-engine.js.map +0 -1
- package/dist/core/table.js.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/crypto/encryption.js.map +0 -1
- package/dist/crypto/keys.js.map +0 -1
- package/dist/handshake/channel.js.map +0 -1
- package/dist/handshake/index.js.map +0 -1
- package/dist/handshake/qr.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/storage/credential-store.js.map +0 -1
- package/dist/storage/local-store.js.map +0 -1
package/dist/core/table.d.ts
CHANGED
|
@@ -1,15 +1,175 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Table<T> — typed handle for a named collection within a
|
|
2
|
+
* Table<T> — typed handle for a named collection within a Interocitor.
|
|
3
3
|
*
|
|
4
4
|
* Wraps the engine's raw Row/string API with a type-safe surface.
|
|
5
5
|
* All reads return plain T objects (internal HLC metadata stripped).
|
|
6
6
|
* All writes accept Partial<T> and return T.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
9
|
-
type AnyEngine =
|
|
10
|
-
import type {
|
|
8
|
+
import type { Interocitor } from './sync-engine.ts';
|
|
9
|
+
type AnyEngine = Interocitor<any>;
|
|
10
|
+
import type { TableEventListener } from './types.ts';
|
|
11
|
+
import type { QueryDescriptor, QueryExecutionOptions, QueryExecutionPolicy, RowDescriptor, WherePrimitive } from './types.ts';
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* Thenable result of an async query.
|
|
14
|
+
*
|
|
15
|
+
* Two layers live here, kept distinct on purpose:
|
|
16
|
+
* 1. Async query identity: `descriptor` + `cacheKey`. Owned by core. Stable
|
|
17
|
+
* across `.sort()` chains. Used by any cache layer (React etc.) to dedupe
|
|
18
|
+
* loads, share in-flight promises, and keep stale data across remounts.
|
|
19
|
+
* 2. Sync derivation: `.sort(compareFn)` runs after the async load. Does not
|
|
20
|
+
* change `cacheKey`. Not part of cache identity. Pure post-processing.
|
|
21
|
+
*
|
|
22
|
+
* `then(...)` triggers a load through the engine cache. Use `load({ bypassCache })`
|
|
23
|
+
* to force a fresh fetch.
|
|
24
|
+
*/
|
|
25
|
+
export declare class QueryResult<T extends Record<string, unknown>> implements PromiseLike<T[]> {
|
|
26
|
+
private readonly _engine;
|
|
27
|
+
/** Optional sync transform stack — runs after rows are loaded. */
|
|
28
|
+
private readonly _sortChain;
|
|
29
|
+
/** Optional pre-resolved promise (used for synthetic / engine-less results). */
|
|
30
|
+
private readonly _explicitPromise;
|
|
31
|
+
/** Stable async-query identity. */
|
|
32
|
+
readonly descriptor: QueryDescriptor;
|
|
33
|
+
/** Stable cache key derived from descriptor by core. */
|
|
34
|
+
readonly cacheKey: string;
|
|
35
|
+
constructor(descriptor: QueryDescriptor, _engine: AnyEngine | null,
|
|
36
|
+
/** Optional sync transform stack — runs after rows are loaded. */
|
|
37
|
+
_sortChain?: ReadonlyArray<(rows: T[]) => T[]>,
|
|
38
|
+
/** Optional pre-resolved promise (used for synthetic / engine-less results). */
|
|
39
|
+
_explicitPromise?: Promise<T[]> | null);
|
|
40
|
+
/** Public metadata. Mirrors `QueryMetadata` shape. */
|
|
41
|
+
get metadata(): {
|
|
42
|
+
descriptor: QueryDescriptor;
|
|
43
|
+
cacheKey: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Async load through engine cache.
|
|
47
|
+
* Pass `{ bypassCache: true }` to ignore cached snapshot and refetch.
|
|
48
|
+
*/
|
|
49
|
+
load(options?: QueryExecutionOptions): Promise<T[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Read cached rows synchronously, if available. Returns `undefined` only if
|
|
52
|
+
* the cache has no row snapshot. Does not start a load.
|
|
53
|
+
*
|
|
54
|
+
* Stale-while-revalidate contract: pending/error snapshots may still carry
|
|
55
|
+
* rows from the previous ready load. Expose those rows so consumers can keep
|
|
56
|
+
* stale data visible while a refresh is in flight.
|
|
57
|
+
*
|
|
58
|
+
* Stable reference contract: callers (React, useSyncExternalStore, etc.)
|
|
59
|
+
* MUST be able to compare the returned array by reference. We memoize the
|
|
60
|
+
* typed+sorted projection keyed by the raw rows reference from the engine
|
|
61
|
+
* cache. As long as the engine cache hasn't moved, this returns the exact
|
|
62
|
+
* same array instance.
|
|
63
|
+
*/
|
|
64
|
+
peekCache(): T[] | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Sync status read for cache consumers (e.g. React bindings). Mirrors the
|
|
67
|
+
* cache snapshot status without exposing engine internals.
|
|
68
|
+
*/
|
|
69
|
+
peekStatus(): {
|
|
70
|
+
status: 'empty' | 'pending' | 'ready' | 'error';
|
|
71
|
+
error?: Error;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Render-time read. If the engine is ready and a cache snapshot exists,
|
|
75
|
+
* returns rows synchronously (no flash). Otherwise returns a promise.
|
|
76
|
+
* If the engine is not ready and `mode === 'cache-first'`, falls back to
|
|
77
|
+
* sync `undefined`-like behavior by returning a promise — caller decides.
|
|
78
|
+
*/
|
|
79
|
+
readForRender(policy?: QueryExecutionPolicy): Promise<T[]> | T[];
|
|
80
|
+
then<R1 = T[], R2 = never>(onfulfilled?: ((value: T[]) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): PromiseLike<R1 | R2>;
|
|
81
|
+
/**
|
|
82
|
+
* Sort the result. Same signature as `Array.prototype.sort`.
|
|
83
|
+
* Sync-only. Does NOT change `cacheKey` — this is post-load derivation.
|
|
84
|
+
*/
|
|
85
|
+
sort(compareFn: (a: T, b: T) => number): QueryResult<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Sort by a single field. Default: ascending.
|
|
88
|
+
*
|
|
89
|
+
* Deterministic and serializable, so it lives on the descriptor and
|
|
90
|
+
* participates in `cacheKey`. Two queries with the same shape and the
|
|
91
|
+
* same `orderBy` share a cache entry; differing only by direction or
|
|
92
|
+
* field produces a distinct cache entry.
|
|
93
|
+
*
|
|
94
|
+
* Re-applying `orderBy` overwrites the previous one (last write wins).
|
|
95
|
+
* The sync `.sort(compareFn)` chain is preserved on top of orderBy for
|
|
96
|
+
* post-load derivations.
|
|
97
|
+
*/
|
|
98
|
+
orderBy<K extends keyof T>(field: K, dir?: 'asc' | 'desc'): QueryResult<T>;
|
|
99
|
+
/**
|
|
100
|
+
* Subscribe to changes that affect this query's table.
|
|
101
|
+
* Returns an unsubscribe function. Currently table-wide; finer-grained
|
|
102
|
+
* invalidation can be added in core later without changing this contract.
|
|
103
|
+
*/
|
|
104
|
+
subscribe(cb: TableEventListener<T>): () => void;
|
|
105
|
+
/**
|
|
106
|
+
* Memoization for the typed+sorted projection. Keyed by the raw rows
|
|
107
|
+
* reference from the engine cache. Same input ref ⇒ same output ref.
|
|
108
|
+
* Cleared automatically when the engine swaps in a fresh raw rows array
|
|
109
|
+
* (e.g. after a write invalidation).
|
|
110
|
+
*/
|
|
111
|
+
private _projectionInputRef;
|
|
112
|
+
private _projectionOutput;
|
|
113
|
+
private _project;
|
|
114
|
+
private _applySort;
|
|
115
|
+
private _loadRaw;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Stable, deterministic cache key derived from a query descriptor.
|
|
119
|
+
*
|
|
120
|
+
* Only async-affecting fields are included. Sync derivations (custom `sort`)
|
|
121
|
+
* are intentionally excluded.
|
|
122
|
+
*/
|
|
123
|
+
export declare function computeCacheKey(descriptor: QueryDescriptor): string;
|
|
124
|
+
/**
|
|
125
|
+
* Thenable result of a single-row read.
|
|
126
|
+
*
|
|
127
|
+
* Same contract as `QueryResult`, scaled down to one row:
|
|
128
|
+
* - identity is `descriptor` + `cacheKey`
|
|
129
|
+
* - `then(...)` / `load(...)` go through the engine row cache
|
|
130
|
+
* - `peekCache()` / `peekStatus()` are sync probes
|
|
131
|
+
* - `subscribe(cb)` fires on table events that touch the same rowId
|
|
132
|
+
*
|
|
133
|
+
* Returns `undefined` when the row is absent or deleted.
|
|
134
|
+
*/
|
|
135
|
+
export declare class RowResult<T extends Record<string, unknown>> implements PromiseLike<T | undefined> {
|
|
136
|
+
private readonly _engine;
|
|
137
|
+
readonly descriptor: RowDescriptor;
|
|
138
|
+
readonly cacheKey: string;
|
|
139
|
+
constructor(descriptor: RowDescriptor, _engine: AnyEngine | null);
|
|
140
|
+
get metadata(): {
|
|
141
|
+
descriptor: RowDescriptor;
|
|
142
|
+
cacheKey: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Memoization for the typed projection. Keyed by the raw row reference.
|
|
146
|
+
* Same input ref ⇒ same output ref — required by useSyncExternalStore
|
|
147
|
+
* consumers and by selector memoization in the React hooks.
|
|
148
|
+
*/
|
|
149
|
+
private _projectionInputRef;
|
|
150
|
+
private _projectionOutput;
|
|
151
|
+
private _project;
|
|
152
|
+
load(options?: QueryExecutionOptions): Promise<T | undefined>;
|
|
153
|
+
/**
|
|
154
|
+
* Sync cached row, or `undefined` if the cache has no row. Pending/error
|
|
155
|
+
* snapshots may still carry the previous row for stale-while-revalidate.
|
|
156
|
+
*/
|
|
157
|
+
peekCache(): T | undefined;
|
|
158
|
+
peekStatus(): {
|
|
159
|
+
status: 'empty' | 'pending' | 'ready' | 'error';
|
|
160
|
+
error?: Error;
|
|
161
|
+
};
|
|
162
|
+
readForRender(policy?: QueryExecutionPolicy): Promise<T | undefined> | T | undefined;
|
|
163
|
+
then<R1 = T | undefined, R2 = never>(onfulfilled?: ((value: T | undefined) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): PromiseLike<R1 | R2>;
|
|
164
|
+
/**
|
|
165
|
+
* Subscribe to changes that touch this row's `rowId`.
|
|
166
|
+
* Returns an unsubscribe function. Filtering done here so callers don't
|
|
167
|
+
* see unrelated table events.
|
|
168
|
+
*/
|
|
169
|
+
subscribe(cb: TableEventListener<T>): () => void;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Typed handle for a named collection within a {@link Interocitor}.
|
|
13
173
|
*
|
|
14
174
|
* All reads return plain objects with CRDT metadata stripped away.
|
|
15
175
|
*
|
|
@@ -27,16 +187,56 @@ export declare class Table<T extends Record<string, unknown>> {
|
|
|
27
187
|
constructor(engine: AnyEngine,
|
|
28
188
|
/** The collection name as stored in the engine. */
|
|
29
189
|
name: string);
|
|
30
|
-
/**
|
|
31
|
-
|
|
190
|
+
/**
|
|
191
|
+
* Build a single-row handle. Same descriptor + cacheKey contract as
|
|
192
|
+
* `query()`, scaled down to one row. Lazy: nothing fetched until
|
|
193
|
+
* `then()` / `load()` / `readForRender()` is called.
|
|
194
|
+
*
|
|
195
|
+
* Use `await table.row(id)` for an async fetch, `table.row(id).peekCache()`
|
|
196
|
+
* for a sync cache read, or pass the handle directly to `useRow`.
|
|
197
|
+
*/
|
|
198
|
+
row(rowId: string): RowResult<T>;
|
|
32
199
|
/** Retrieve all live (non-deleted) records in this collection. */
|
|
33
|
-
query():
|
|
200
|
+
query(): QueryResult<T>;
|
|
34
201
|
/** Build a field-scoped where query (Dexie-style, without string schema syntax). */
|
|
35
202
|
where<K extends keyof T & string>(field: K): TableWhere<T>;
|
|
36
|
-
/**
|
|
203
|
+
/**
|
|
204
|
+
* Patch a record — only the provided fields are updated.
|
|
205
|
+
* Omitted fields are untouched (CRDT per-field merge).
|
|
206
|
+
* Returns the full merged row.
|
|
207
|
+
*/
|
|
208
|
+
patch(rowId: string, data: Partial<T>, userId?: string): Promise<T>;
|
|
209
|
+
/** Back-compat alias for older code paths. */
|
|
37
210
|
put(rowId: string, data: Partial<T>, userId?: string): Promise<T>;
|
|
211
|
+
/**
|
|
212
|
+
* Replace a record — writes ALL fields in `data`, explicitly nulling any
|
|
213
|
+
* fields present in the existing row but absent from `data`.
|
|
214
|
+
* Returns the full row.
|
|
215
|
+
*/
|
|
216
|
+
replace(rowId: string, data: T, userId?: string): Promise<T>;
|
|
217
|
+
/**
|
|
218
|
+
* Insert a new record with an auto-generated row ID.
|
|
219
|
+
* Returns the generated ID.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* const id = await table.add({ title: 'Buy milk' });
|
|
223
|
+
* const id = await table.add({ title: 'Buy milk' }, { prefix: 'task' });
|
|
224
|
+
*/
|
|
225
|
+
add(data: T, opts?: {
|
|
226
|
+
prefix?: string;
|
|
227
|
+
}, userId?: string): Promise<string>;
|
|
38
228
|
/** Soft-delete a record. */
|
|
39
229
|
delete(rowId: string, userId?: string): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* Subscribe to changes in this table. Fires on every change/delete.
|
|
232
|
+
* Returns an unsubscribe function.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* const unsub = db.table('tasks').subscribe(event => {
|
|
236
|
+
* if (event.type === 'change') console.log(event.row);
|
|
237
|
+
* });
|
|
238
|
+
*/
|
|
239
|
+
subscribe(cb: TableEventListener<T>): () => void;
|
|
40
240
|
}
|
|
41
241
|
declare class TableWhere<T extends Record<string, unknown>> {
|
|
42
242
|
private readonly engine;
|
|
@@ -44,17 +244,17 @@ declare class TableWhere<T extends Record<string, unknown>> {
|
|
|
44
244
|
private readonly field;
|
|
45
245
|
constructor(engine: AnyEngine, table: string, field: string);
|
|
46
246
|
private run;
|
|
47
|
-
equals(value: WherePrimitive):
|
|
48
|
-
above(value: WherePrimitive):
|
|
49
|
-
aboveOrEqual(value: WherePrimitive):
|
|
50
|
-
below(value: WherePrimitive):
|
|
51
|
-
belowOrEqual(value: WherePrimitive):
|
|
247
|
+
equals(value: WherePrimitive): QueryResult<T>;
|
|
248
|
+
above(value: WherePrimitive): QueryResult<T>;
|
|
249
|
+
aboveOrEqual(value: WherePrimitive): QueryResult<T>;
|
|
250
|
+
below(value: WherePrimitive): QueryResult<T>;
|
|
251
|
+
belowOrEqual(value: WherePrimitive): QueryResult<T>;
|
|
52
252
|
between(lower: WherePrimitive, upper: WherePrimitive, options?: {
|
|
53
253
|
lowerOpen?: boolean;
|
|
54
254
|
upperOpen?: boolean;
|
|
55
|
-
}):
|
|
56
|
-
startsWith(prefix: string):
|
|
57
|
-
anyOf(values: WherePrimitive[]):
|
|
255
|
+
}): QueryResult<T>;
|
|
256
|
+
startsWith(prefix: string): QueryResult<T>;
|
|
257
|
+
anyOf(values: WherePrimitive[]): QueryResult<T>;
|
|
58
258
|
}
|
|
59
259
|
export {};
|
|
60
260
|
//# sourceMappingURL=table.d.ts.map
|
package/dist/core/table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/core/table.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/core/table.ts"],"names":[],"mappings":"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"}
|