@gonvex/client 0.1.32 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +119 -95
  2. package/dist/control.d.ts +416 -0
  3. package/dist/control.js +210 -0
  4. package/dist/control.js.map +1 -0
  5. package/dist/error-reporter.d.ts +20 -6
  6. package/dist/error-reporter.js +55 -27
  7. package/dist/error-reporter.js.map +1 -1
  8. package/dist/index.d.ts +166 -133
  9. package/dist/index.js +1114 -1139
  10. package/dist/index.js.map +1 -1
  11. package/dist/indexeddb-replica.d.ts +20 -0
  12. package/dist/indexeddb-replica.js +193 -0
  13. package/dist/indexeddb-replica.js.map +1 -0
  14. package/dist/kv-stores.d.ts +2 -48
  15. package/dist/kv-stores.js +24 -411
  16. package/dist/kv-stores.js.map +1 -1
  17. package/dist/local-replica.d.ts +240 -0
  18. package/dist/local-replica.js +590 -0
  19. package/dist/local-replica.js.map +1 -0
  20. package/dist/optimistic.d.ts +34 -55
  21. package/dist/optimistic.js +70 -269
  22. package/dist/optimistic.js.map +1 -1
  23. package/dist/outbox.d.ts +25 -25
  24. package/dist/outbox.js +27 -27
  25. package/dist/outbox.js.map +1 -1
  26. package/dist/query-expression.d.ts +58 -0
  27. package/dist/query-expression.js +164 -0
  28. package/dist/query-expression.js.map +1 -0
  29. package/dist/replica-integrity.d.ts +5 -0
  30. package/dist/replica-integrity.js +58 -0
  31. package/dist/replica-integrity.js.map +1 -0
  32. package/package.json +4 -4
  33. package/dist/browser-cache-client.d.ts +0 -77
  34. package/dist/browser-cache-client.js +0 -156
  35. package/dist/browser-cache-client.js.map +0 -1
  36. package/dist/browser-cache-shared-worker.d.ts +0 -35
  37. package/dist/browser-cache-shared-worker.js +0 -118
  38. package/dist/browser-cache-shared-worker.js.map +0 -1
  39. package/dist/browser-cache.d.ts +0 -43
  40. package/dist/browser-cache.js +0 -67
  41. package/dist/browser-cache.js.map +0 -1
  42. package/dist/browser-capabilities.d.ts +0 -21
  43. package/dist/browser-capabilities.js +0 -31
  44. package/dist/browser-capabilities.js.map +0 -1
  45. package/dist/cache-coordinator.d.ts +0 -37
  46. package/dist/cache-coordinator.js +0 -109
  47. package/dist/cache-coordinator.js.map +0 -1
  48. package/dist/cache.d.ts +0 -74
  49. package/dist/cache.js +0 -120
  50. package/dist/cache.js.map +0 -1
  51. package/dist/persistent-cache.d.ts +0 -41
  52. package/dist/persistent-cache.js +0 -103
  53. package/dist/persistent-cache.js.map +0 -1
  54. package/dist/query-cache.d.ts +0 -88
  55. package/dist/query-cache.js +0 -346
  56. package/dist/query-cache.js.map +0 -1
  57. package/dist/sync-store.d.ts +0 -96
  58. package/dist/sync-store.js +0 -500
  59. package/dist/sync-store.js.map +0 -1
@@ -1,346 +0,0 @@
1
- export const defaultQueryCacheMaxAgeMs = 24 * 60 * 60 * 1000;
2
- export const defaultQueryCacheMaxEntryBytes = 2 * 1024 * 1024;
3
- export const defaultQueryCacheMaxEntriesPerScope = 100;
4
- export const defaultQueryCacheMaxBytesPerScope = 20 * 1024 * 1024;
5
- export const defaultQueryCacheMaxBytes = 50 * 1024 * 1024;
6
- export const defaultQueryCacheReadTimeoutMs = 250;
7
- export class DexieQueryCacheStore {
8
- databaseName;
9
- maxAgeMs;
10
- maxEntryBytes;
11
- maxEntriesPerScope;
12
- maxBytesPerScope;
13
- maxBytes;
14
- indexedDB;
15
- keyRange;
16
- memory = new Map();
17
- databasePromise;
18
- database;
19
- readsEnabled = true;
20
- writesEnabled = true;
21
- disabledReason;
22
- cleanupScheduled = false;
23
- constructor(options = {}) {
24
- this.databaseName = options.databaseName ?? "gonvex-query-cache";
25
- this.maxAgeMs = positive(options.maxAgeMs, defaultQueryCacheMaxAgeMs);
26
- this.maxEntryBytes = positive(options.maxEntryBytes, defaultQueryCacheMaxEntryBytes);
27
- this.maxEntriesPerScope = positive(options.maxEntriesPerScope, defaultQueryCacheMaxEntriesPerScope);
28
- this.maxBytesPerScope = positive(options.maxBytesPerScope, defaultQueryCacheMaxBytesPerScope);
29
- this.maxBytes = positive(options.maxBytes, defaultQueryCacheMaxBytes);
30
- this.indexedDB = options.indexedDB;
31
- this.keyRange = options.IDBKeyRange;
32
- if (options.enabled === false) {
33
- this.disable("disabled-by-client");
34
- }
35
- }
36
- async read(scope, path, args, maxAgeMs = this.maxAgeMs) {
37
- if (!this.readsEnabled || !validScope(scope))
38
- return undefined;
39
- try {
40
- const queryHash = await hashQuery(path, args);
41
- const memoryKey = recordMemoryKey(scope, queryHash);
42
- const now = Date.now();
43
- const memoryRecord = this.memory.get(memoryKey);
44
- if (memoryRecord) {
45
- if (recordExpired(memoryRecord, now, maxAgeMs)) {
46
- this.memory.delete(memoryKey);
47
- void this.deleteByHash(scope, queryHash).catch(() => undefined);
48
- return undefined;
49
- }
50
- this.touchMemory(memoryKey, memoryRecord, now);
51
- return lookup(memoryRecord, now);
52
- }
53
- const database = await this.open();
54
- const record = await database.results.get([scope, queryHash]);
55
- if (!record)
56
- return undefined;
57
- if (recordExpired(record, now, maxAgeMs)) {
58
- await database.results.delete([scope, queryHash]);
59
- return undefined;
60
- }
61
- this.touchMemory(memoryKey, record, now);
62
- void database.results.update([scope, queryHash], { lastAccessedAt: now }).catch(() => undefined);
63
- return lookup(record, now);
64
- }
65
- catch (error) {
66
- this.disable(errorReason(error));
67
- return undefined;
68
- }
69
- }
70
- async write(value) {
71
- if (!this.writesEnabled || !validScope(value.scope) || !value.revision)
72
- return "disabled";
73
- try {
74
- const queryHash = await hashQuery(value.path, value.args);
75
- const sizeBytes = jsonSize(value.result);
76
- if (sizeBytes > this.maxEntryBytes)
77
- return "oversize";
78
- const now = Date.now();
79
- const maxAgeMs = Math.min(this.maxAgeMs, positive(value.maxAgeMs, this.maxAgeMs));
80
- const record = {
81
- scope: value.scope,
82
- queryHash,
83
- result: value.result,
84
- revision: value.revision,
85
- writtenAt: now,
86
- lastAccessedAt: now,
87
- expiresAt: now + maxAgeMs,
88
- sizeBytes,
89
- };
90
- const outcome = await this.putRecord(record, false);
91
- if (outcome === "written") {
92
- this.touchMemory(recordMemoryKey(value.scope, queryHash), record, now);
93
- this.scheduleCleanup();
94
- }
95
- return outcome;
96
- }
97
- catch (error) {
98
- if (quotaExceeded(error)) {
99
- try {
100
- await this.cleanup(true);
101
- const queryHash = await hashQuery(value.path, value.args);
102
- const now = Date.now();
103
- const record = {
104
- scope: value.scope,
105
- queryHash,
106
- result: value.result,
107
- revision: value.revision,
108
- writtenAt: now,
109
- lastAccessedAt: now,
110
- expiresAt: now + Math.min(this.maxAgeMs, positive(value.maxAgeMs, this.maxAgeMs)),
111
- sizeBytes: jsonSize(value.result),
112
- };
113
- return await this.putRecord(record, true);
114
- }
115
- catch {
116
- this.writesEnabled = false;
117
- this.disabledReason = "quota-exceeded";
118
- return "error";
119
- }
120
- }
121
- this.writesEnabled = false;
122
- this.disabledReason = errorReason(error);
123
- return "error";
124
- }
125
- }
126
- async delete(scope, path, args) {
127
- if (!validScope(scope))
128
- return;
129
- try {
130
- const queryHash = await hashQuery(path, args);
131
- this.memory.delete(recordMemoryKey(scope, queryHash));
132
- await this.deleteByHash(scope, queryHash);
133
- }
134
- catch {
135
- // Cache deletion is best-effort; server data remains authoritative.
136
- }
137
- }
138
- async clear(scope) {
139
- this.memory.clear();
140
- if (!this.readsEnabled && !this.database)
141
- return;
142
- try {
143
- const database = await this.open();
144
- if (scope) {
145
- await database.results.where("scope").equals(scope).delete();
146
- }
147
- else {
148
- await database.results.clear();
149
- }
150
- }
151
- catch {
152
- // Clearing a disposable cache must not affect the application.
153
- }
154
- }
155
- status() {
156
- return {
157
- enabled: this.readsEnabled || this.writesEnabled,
158
- readsEnabled: this.readsEnabled,
159
- writesEnabled: this.writesEnabled,
160
- reason: this.disabledReason,
161
- };
162
- }
163
- close() {
164
- this.database?.close();
165
- this.database = undefined;
166
- this.databasePromise = undefined;
167
- this.memory.clear();
168
- }
169
- async open() {
170
- if (!this.databasePromise) {
171
- this.databasePromise = this.createDatabase().catch((error) => {
172
- this.databasePromise = undefined;
173
- throw error;
174
- });
175
- }
176
- return this.databasePromise;
177
- }
178
- async createDatabase() {
179
- const indexedDBValue = this.indexedDB ?? globalThis.indexedDB;
180
- const keyRangeValue = this.keyRange ?? globalThis.IDBKeyRange;
181
- if (!indexedDBValue || !keyRangeValue)
182
- throw new Error("indexeddb-unavailable");
183
- if (!globalThis.crypto?.subtle)
184
- throw new Error("web-crypto-unavailable");
185
- const { Dexie } = await import("dexie");
186
- const database = new Dexie(this.databaseName, {
187
- indexedDB: indexedDBValue,
188
- IDBKeyRange: keyRangeValue,
189
- });
190
- database.version(1).stores({
191
- results: "[scope+queryHash], scope, [scope+lastAccessedAt], lastAccessedAt, expiresAt",
192
- });
193
- database.on("versionchange", () => database.close());
194
- await database.open();
195
- this.database = database;
196
- return database;
197
- }
198
- async putRecord(record, afterCleanup) {
199
- if (record.sizeBytes > this.maxEntryBytes)
200
- return "oversize";
201
- const database = await this.open();
202
- const written = await database.transaction("rw", database.results, async () => {
203
- const previous = await database.results.get([record.scope, record.queryHash]);
204
- if (previous && previous.revision >= record.revision)
205
- return false;
206
- await database.results.put(record);
207
- return true;
208
- });
209
- const outcome = written ? "written" : "older";
210
- if (afterCleanup && outcome === "written") {
211
- this.touchMemory(recordMemoryKey(record.scope, record.queryHash), record, record.lastAccessedAt);
212
- }
213
- return outcome;
214
- }
215
- async deleteByHash(scope, queryHash) {
216
- if (!this.readsEnabled && !this.database)
217
- return;
218
- const database = await this.open();
219
- await database.results.delete([scope, queryHash]);
220
- }
221
- touchMemory(key, record, now) {
222
- this.memory.delete(key);
223
- this.memory.set(key, { ...record, lastAccessedAt: now });
224
- while (this.memory.size > this.maxEntriesPerScope) {
225
- const oldest = this.memory.keys().next().value;
226
- if (!oldest)
227
- break;
228
- this.memory.delete(oldest);
229
- }
230
- }
231
- scheduleCleanup() {
232
- if (this.cleanupScheduled)
233
- return;
234
- this.cleanupScheduled = true;
235
- const run = () => {
236
- this.cleanupScheduled = false;
237
- void this.cleanup(false).catch(() => undefined);
238
- };
239
- if (typeof globalThis.requestIdleCallback === "function") {
240
- globalThis.requestIdleCallback(run, { timeout: 2_000 });
241
- }
242
- else {
243
- setTimeout(run, 0);
244
- }
245
- }
246
- async cleanup(force) {
247
- const database = await this.open();
248
- const records = await database.results.orderBy("lastAccessedAt").toArray();
249
- const now = Date.now();
250
- const deleteKeys = new Set();
251
- const scopeBytes = new Map();
252
- const scopeCounts = new Map();
253
- let globalBytes = 0;
254
- for (const record of [...records].reverse()) {
255
- const encodedKey = recordMemoryKey(record.scope, record.queryHash);
256
- if (record.expiresAt <= now) {
257
- deleteKeys.add(encodedKey);
258
- continue;
259
- }
260
- const nextScopeBytes = (scopeBytes.get(record.scope) ?? 0) + record.sizeBytes;
261
- const nextScopeCount = (scopeCounts.get(record.scope) ?? 0) + 1;
262
- const globalLimit = force ? Math.floor(this.maxBytes * 0.8) : this.maxBytes;
263
- if (nextScopeBytes > this.maxBytesPerScope
264
- || nextScopeCount > this.maxEntriesPerScope
265
- || globalBytes + record.sizeBytes > globalLimit) {
266
- deleteKeys.add(encodedKey);
267
- continue;
268
- }
269
- scopeBytes.set(record.scope, nextScopeBytes);
270
- scopeCounts.set(record.scope, nextScopeCount);
271
- globalBytes += record.sizeBytes;
272
- }
273
- if (deleteKeys.size === 0)
274
- return;
275
- const keys = [];
276
- for (const record of records) {
277
- if (deleteKeys.has(recordMemoryKey(record.scope, record.queryHash))) {
278
- keys.push([record.scope, record.queryHash]);
279
- this.memory.delete(recordMemoryKey(record.scope, record.queryHash));
280
- }
281
- }
282
- await database.results.bulkDelete(keys);
283
- }
284
- disable(reason) {
285
- this.readsEnabled = false;
286
- this.writesEnabled = false;
287
- this.disabledReason = reason;
288
- }
289
- }
290
- export function createQueryCacheStore(options) {
291
- if (options === false || options?.enabled === false)
292
- return undefined;
293
- if (options?.store)
294
- return options.store;
295
- return new DexieQueryCacheStore(options);
296
- }
297
- async function hashQuery(path, args) {
298
- const subtle = globalThis.crypto?.subtle;
299
- if (!subtle)
300
- throw new Error("web-crypto-unavailable");
301
- const payload = new TextEncoder().encode(`${path}\u0000${stableStringify(args)}`);
302
- const digest = await subtle.digest("SHA-256", payload);
303
- return Array.from(new Uint8Array(digest), (value) => value.toString(16).padStart(2, "0")).join("");
304
- }
305
- function stableStringify(value) {
306
- if (value === null || typeof value !== "object")
307
- return JSON.stringify(value);
308
- if (Array.isArray(value))
309
- return `[${value.map(stableStringify).join(",")}]`;
310
- return `{${Object.keys(value)
311
- .sort()
312
- .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`)
313
- .join(",")}}`;
314
- }
315
- function lookup(record, now) {
316
- return {
317
- result: record.result,
318
- revision: record.revision,
319
- writtenAt: record.writtenAt,
320
- ageMs: Math.max(0, now - record.writtenAt),
321
- };
322
- }
323
- function recordExpired(record, now, maxAgeMs) {
324
- return record.expiresAt <= now || now - record.writtenAt > Math.min(maxAgeMs, defaultQueryCacheMaxAgeMs);
325
- }
326
- function recordMemoryKey(scope, queryHash) {
327
- return `${scope}\u0000${queryHash}`;
328
- }
329
- function jsonSize(value) {
330
- return new TextEncoder().encode(JSON.stringify(value)).byteLength;
331
- }
332
- function quotaExceeded(error) {
333
- return (typeof DOMException !== "undefined" && error instanceof DOMException)
334
- ? error.name === "QuotaExceededError"
335
- : error instanceof Error && error.name === "QuotaExceededError";
336
- }
337
- function errorReason(error) {
338
- return error instanceof Error ? error.message || error.name : "query-cache-unavailable";
339
- }
340
- function validScope(scope) {
341
- return scope.length >= 16;
342
- }
343
- function positive(value, fallback) {
344
- return value !== undefined && Number.isFinite(value) && value > 0 ? value : fallback;
345
- }
346
- //# sourceMappingURL=query-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-cache.js","sourceRoot":"","sources":["../src/query-cache.ts"],"names":[],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- import type { JsonValue, QueryCacheDirective, SyncCursor } from "@gonvex/protocol";
2
- export declare const defaultSyncStoreMaxBytes: number;
3
- export type SyncStoreOptions = {
4
- enabled?: boolean;
5
- databaseName?: string;
6
- maxBytes?: number;
7
- hashes?: Record<string, string>;
8
- indexedDB?: IDBFactory;
9
- IDBKeyRange?: typeof IDBKeyRange;
10
- store?: SyncStore;
11
- };
12
- export type StoredSyncCollection = {
13
- rows: JsonValue[];
14
- cursor: SyncCursor;
15
- keyField: string;
16
- mode?: "eager" | "progressive";
17
- /** Whether the server budget-cut the materialized collection. */
18
- truncated?: boolean;
19
- orderBy?: string;
20
- orderDirection?: "asc" | "desc";
21
- maxRows?: number;
22
- maxBytes?: number;
23
- hashes?: Record<string, string>;
24
- /**
25
- * The caller proved these rows are byte-identical to what is already
26
- * stored, so only the collection's cursor/metadata needs to advance.
27
- * Rewriting unchanged rows is what turns a quiet reload into a full
28
- * delete+insert of every row of every collection.
29
- */
30
- rowsUnchanged?: boolean;
31
- };
32
- export type SyncStore = {
33
- load(scope: string, path: string, args: JsonValue): Promise<StoredSyncCollection | undefined>;
34
- replace(scope: string, path: string, args: JsonValue, value: StoredSyncCollection): Promise<void>;
35
- applyDelta(scope: string, path: string, args: JsonValue, value: {
36
- cursor: SyncCursor;
37
- keyField: string;
38
- mode?: "eager" | "progressive";
39
- truncated?: boolean;
40
- orderBy?: string;
41
- orderDirection?: "asc" | "desc";
42
- upserts: JsonValue[];
43
- deleted: string[];
44
- maxRows?: number;
45
- maxBytes?: number;
46
- hashes?: Record<string, string>;
47
- }): Promise<void>;
48
- delete(scope: string, path: string, args: JsonValue): Promise<void>;
49
- loadDirective(identity: string): Promise<QueryCacheDirective | undefined>;
50
- saveDirective(identity: string, directive: QueryCacheDirective): Promise<void>;
51
- clear(scope?: string): Promise<void>;
52
- close(): void;
53
- };
54
- export declare class DexieSyncStore implements SyncStore {
55
- private readonly databaseName;
56
- private readonly maxBytes;
57
- private readonly indexedDB?;
58
- private readonly keyRange?;
59
- private database?;
60
- private databasePromise?;
61
- private disabled;
62
- private cleanupScheduled;
63
- constructor(options?: SyncStoreOptions);
64
- load(scope: string, path: string, args: JsonValue): Promise<StoredSyncCollection | undefined>;
65
- replace(scope: string, path: string, args: JsonValue, value: StoredSyncCollection): Promise<void>;
66
- applyDelta(scope: string, path: string, args: JsonValue, value: {
67
- cursor: SyncCursor;
68
- keyField: string;
69
- mode?: "eager" | "progressive";
70
- truncated?: boolean;
71
- orderBy?: string;
72
- orderDirection?: "asc" | "desc";
73
- upserts: JsonValue[];
74
- deleted: string[];
75
- maxRows?: number;
76
- maxBytes?: number;
77
- hashes?: Record<string, string>;
78
- }): Promise<void>;
79
- clear(scope?: string): Promise<void>;
80
- delete(scope: string, path: string, args: JsonValue): Promise<void>;
81
- loadDirective(identity: string): Promise<QueryCacheDirective | undefined>;
82
- saveDirective(identity: string, directive: QueryCacheDirective): Promise<void>;
83
- close(): void;
84
- private open;
85
- private createDatabase;
86
- private scheduleCleanup;
87
- private cleanup;
88
- }
89
- export declare function createSyncStore(options: SyncStoreOptions | false | undefined): SyncStore | undefined;
90
- export declare function syncHashesDigest(hashes: Record<string, string>): Promise<string>;
91
- /**
92
- * Hash the rows the client actually materialized. Persisted server-provided
93
- * hashes are only a resume optimization; they are not integrity evidence until
94
- * they have been recomputed from the IndexedDB values that the UI will read.
95
- */
96
- export declare function syncRowsHashes(rows: JsonValue[], keyField: string): Promise<Record<string, string>>;