@gonvex/client 0.1.13 → 0.1.15

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.
@@ -0,0 +1,396 @@
1
+ export const defaultSyncStoreMaxBytes = 100 * 1024 * 1024;
2
+ export class DexieSyncStore {
3
+ databaseName;
4
+ maxBytes;
5
+ indexedDB;
6
+ keyRange;
7
+ database;
8
+ databasePromise;
9
+ disabled = false;
10
+ cleanupScheduled = false;
11
+ constructor(options = {}) {
12
+ this.databaseName = options.databaseName ?? "gonvex-sync";
13
+ this.maxBytes = positive(options.maxBytes, defaultSyncStoreMaxBytes);
14
+ this.indexedDB = options.indexedDB;
15
+ this.keyRange = options.IDBKeyRange;
16
+ this.disabled = options.enabled === false;
17
+ }
18
+ async load(scope, path, args) {
19
+ if (this.disabled || !scope)
20
+ return undefined;
21
+ try {
22
+ const key = await collectionKey(scope, path, args);
23
+ const database = await this.open();
24
+ const collection = await database.collections.get(key);
25
+ if (!collection)
26
+ return undefined;
27
+ const storedRows = await database.rows.where("collectionKey").equals(key).sortBy("rank");
28
+ const rows = sortSyncRows(storedRows, collection.orderBy, collection.orderDirection);
29
+ void database.collections.update(key, { lastAccessedAt: Date.now() }).catch(() => undefined);
30
+ return {
31
+ rows: rows.map((row) => row.value),
32
+ cursor: collection.cursor,
33
+ keyField: collection.keyField,
34
+ orderBy: collection.orderBy,
35
+ orderDirection: collection.orderDirection,
36
+ maxRows: collection.maxRows,
37
+ maxBytes: collection.maxBytes,
38
+ };
39
+ }
40
+ catch {
41
+ this.disabled = true;
42
+ return undefined;
43
+ }
44
+ }
45
+ async replace(scope, path, args, value) {
46
+ if (this.disabled || !scope)
47
+ return;
48
+ try {
49
+ const key = await collectionKey(scope, path, args);
50
+ const argsHash = await hashValue(stableStringify(args));
51
+ const rows = boundedRows(value.rows, value.keyField, value.maxRows, value.maxBytes, value.orderBy, value.orderDirection)
52
+ .map((row, rank) => ({
53
+ collectionKey: key,
54
+ rowId: rowKey(row, value.keyField),
55
+ value: row,
56
+ rank,
57
+ sizeBytes: jsonSize(row),
58
+ }));
59
+ const sizeBytes = rows.reduce((sum, row) => sum + row.sizeBytes, 0);
60
+ const database = await this.open();
61
+ await database.transaction("rw", database.collections, database.rows, async () => {
62
+ await database.rows.where("collectionKey").equals(key).delete();
63
+ if (rows.length > 0)
64
+ await database.rows.bulkPut(rows);
65
+ await database.collections.put({
66
+ key,
67
+ scope,
68
+ path,
69
+ argsHash,
70
+ cursor: value.cursor,
71
+ keyField: value.keyField,
72
+ orderBy: value.orderBy,
73
+ orderDirection: value.orderDirection,
74
+ maxRows: value.maxRows,
75
+ maxBytes: value.maxBytes,
76
+ rowCount: rows.length,
77
+ sizeBytes,
78
+ lastAccessedAt: Date.now(),
79
+ });
80
+ });
81
+ this.scheduleCleanup();
82
+ }
83
+ catch {
84
+ this.disabled = true;
85
+ }
86
+ }
87
+ async applyDelta(scope, path, args, value) {
88
+ if (this.disabled || !scope)
89
+ return;
90
+ try {
91
+ const key = await collectionKey(scope, path, args);
92
+ const database = await this.open();
93
+ await database.transaction("rw", database.collections, database.rows, async () => {
94
+ const collection = await database.collections.get(key);
95
+ if (!collection)
96
+ return;
97
+ const deleted = new Set(value.deleted);
98
+ for (const row of value.upserts)
99
+ deleted.delete(rowKey(row, value.keyField));
100
+ if (deleted.size > 0) {
101
+ await database.rows.bulkDelete([...deleted].map((rowId) => [key, rowId]));
102
+ }
103
+ const currentRows = await database.rows.where("collectionKey").equals(key).sortBy("rank");
104
+ let nextRank = currentRows.length === 0 ? 0 : currentRows[0].rank - 1;
105
+ const upsertRecords = [];
106
+ for (const row of value.upserts) {
107
+ const rowId = rowKey(row, value.keyField);
108
+ if (!rowId)
109
+ continue;
110
+ upsertRecords.push({
111
+ collectionKey: key,
112
+ rowId,
113
+ value: row,
114
+ rank: nextRank--,
115
+ sizeBytes: jsonSize(row),
116
+ });
117
+ }
118
+ if (upsertRecords.length > 0)
119
+ await database.rows.bulkPut(upsertRecords);
120
+ const maxRows = value.maxRows ?? collection.maxRows;
121
+ const maxBytes = value.maxBytes ?? collection.maxBytes;
122
+ const ordered = sortSyncRows(await database.rows.where("collectionKey").equals(key).sortBy("rank"), value.orderBy ?? collection.orderBy, value.orderDirection ?? collection.orderDirection);
123
+ const kept = boundedRowRecords(ordered, maxRows, maxBytes);
124
+ const keptIds = new Set(kept.map((row) => row.rowId));
125
+ const evicted = ordered.filter((row) => !keptIds.has(row.rowId));
126
+ if (evicted.length > 0) {
127
+ await database.rows.bulkDelete(evicted.map((row) => [key, row.rowId]));
128
+ }
129
+ await database.collections.put({
130
+ ...collection,
131
+ cursor: value.cursor,
132
+ keyField: value.keyField,
133
+ orderBy: value.orderBy ?? collection.orderBy,
134
+ orderDirection: value.orderDirection ?? collection.orderDirection,
135
+ maxRows,
136
+ maxBytes,
137
+ rowCount: kept.length,
138
+ sizeBytes: kept.reduce((sum, row) => sum + row.sizeBytes, 0),
139
+ lastAccessedAt: Date.now(),
140
+ });
141
+ });
142
+ this.scheduleCleanup();
143
+ }
144
+ catch {
145
+ this.disabled = true;
146
+ }
147
+ }
148
+ async clear(scope) {
149
+ if (this.disabled && !this.database)
150
+ return;
151
+ try {
152
+ const database = await this.open();
153
+ if (!scope) {
154
+ await database.transaction("rw", database.collections, database.rows, database.identities, async () => {
155
+ await database.rows.clear();
156
+ await database.collections.clear();
157
+ await database.identities.clear();
158
+ });
159
+ return;
160
+ }
161
+ const collections = await database.collections.where("scope").equals(scope).toArray();
162
+ const keys = collections.map((collection) => collection.key);
163
+ const identities = await database.identities.toArray();
164
+ await database.transaction("rw", database.collections, database.rows, database.identities, async () => {
165
+ for (const key of keys)
166
+ await database.rows.where("collectionKey").equals(key).delete();
167
+ await database.collections.bulkDelete(keys);
168
+ await database.identities.bulkDelete(identities.filter((entry) => entry.directive.scope === scope).map((entry) => entry.identity));
169
+ });
170
+ }
171
+ catch {
172
+ // Disposable local data must never break the application.
173
+ }
174
+ }
175
+ async delete(scope, path, args) {
176
+ if (this.disabled || !scope)
177
+ return;
178
+ try {
179
+ const key = await collectionKey(scope, path, args);
180
+ const database = await this.open();
181
+ await database.transaction("rw", database.collections, database.rows, async () => {
182
+ await database.rows.where("collectionKey").equals(key).delete();
183
+ await database.collections.delete(key);
184
+ });
185
+ }
186
+ catch {
187
+ // Disposable local data must never break the application.
188
+ }
189
+ }
190
+ async loadDirective(identity) {
191
+ if (this.disabled || !identity)
192
+ return undefined;
193
+ try {
194
+ const database = await this.open();
195
+ const record = await database.identities.get(identity);
196
+ if (!record)
197
+ return undefined;
198
+ void database.identities.update(identity, { lastAccessedAt: Date.now() }).catch(() => undefined);
199
+ return record.directive;
200
+ }
201
+ catch {
202
+ return undefined;
203
+ }
204
+ }
205
+ async saveDirective(identity, directive) {
206
+ if (this.disabled || !identity)
207
+ return;
208
+ try {
209
+ const database = await this.open();
210
+ await database.identities.put({ identity, directive, lastAccessedAt: Date.now() });
211
+ }
212
+ catch {
213
+ // Warm-start metadata is an optimization, never a request prerequisite.
214
+ }
215
+ }
216
+ close() {
217
+ this.database?.close();
218
+ this.database = undefined;
219
+ this.databasePromise = undefined;
220
+ }
221
+ async open() {
222
+ if (!this.databasePromise) {
223
+ this.databasePromise = this.createDatabase().catch((error) => {
224
+ this.databasePromise = undefined;
225
+ throw error;
226
+ });
227
+ }
228
+ return this.databasePromise;
229
+ }
230
+ async createDatabase() {
231
+ const indexedDBValue = this.indexedDB ?? globalThis.indexedDB;
232
+ const keyRangeValue = this.keyRange ?? globalThis.IDBKeyRange;
233
+ if (!indexedDBValue || !keyRangeValue)
234
+ throw new Error("indexeddb-unavailable");
235
+ const { Dexie } = await import("dexie");
236
+ const database = new Dexie(this.databaseName, {
237
+ indexedDB: indexedDBValue,
238
+ IDBKeyRange: keyRangeValue,
239
+ });
240
+ database.version(1).stores({
241
+ collections: "&key, scope, [scope+lastAccessedAt], lastAccessedAt",
242
+ rows: "[collectionKey+rowId], collectionKey, [collectionKey+rank]",
243
+ });
244
+ database.version(2).stores({
245
+ collections: "&key, scope, [scope+lastAccessedAt], lastAccessedAt",
246
+ rows: "[collectionKey+rowId], collectionKey, [collectionKey+rank]",
247
+ identities: "&identity, lastAccessedAt",
248
+ });
249
+ database.on("versionchange", () => database.close());
250
+ await database.open();
251
+ this.database = database;
252
+ return database;
253
+ }
254
+ scheduleCleanup() {
255
+ if (this.cleanupScheduled)
256
+ return;
257
+ this.cleanupScheduled = true;
258
+ const run = () => {
259
+ this.cleanupScheduled = false;
260
+ void this.cleanup().catch(() => undefined);
261
+ };
262
+ if (typeof globalThis.requestIdleCallback === "function") {
263
+ globalThis.requestIdleCallback(run, { timeout: 2_000 });
264
+ }
265
+ else {
266
+ setTimeout(run, 0);
267
+ }
268
+ }
269
+ async cleanup() {
270
+ const database = await this.open();
271
+ const collections = await database.collections.orderBy("lastAccessedAt").reverse().toArray();
272
+ let bytes = 0;
273
+ const evict = [];
274
+ for (const collection of collections) {
275
+ if (bytes + collection.sizeBytes > this.maxBytes) {
276
+ evict.push(collection.key);
277
+ }
278
+ else {
279
+ bytes += collection.sizeBytes;
280
+ }
281
+ }
282
+ if (evict.length === 0)
283
+ return;
284
+ await database.transaction("rw", database.collections, database.rows, async () => {
285
+ for (const key of evict)
286
+ await database.rows.where("collectionKey").equals(key).delete();
287
+ await database.collections.bulkDelete(evict);
288
+ });
289
+ }
290
+ }
291
+ export function createSyncStore(options) {
292
+ if (options === false || options?.enabled === false)
293
+ return undefined;
294
+ if (options?.store)
295
+ return options.store;
296
+ return new DexieSyncStore(options);
297
+ }
298
+ function boundedRows(rows, keyField, maxRows, maxBytes, orderBy, orderDirection) {
299
+ const seen = new Set();
300
+ const kept = [];
301
+ let bytes = 0;
302
+ for (const row of sortSyncRows(rows, orderBy, orderDirection)) {
303
+ const key = rowKey(row, keyField);
304
+ if (!key || seen.has(key))
305
+ continue;
306
+ const size = jsonSize(row);
307
+ if (maxRows && kept.length >= maxRows)
308
+ break;
309
+ if (maxBytes && bytes + size > maxBytes)
310
+ break;
311
+ seen.add(key);
312
+ bytes += size;
313
+ kept.push(row);
314
+ }
315
+ return kept;
316
+ }
317
+ function sortSyncRows(rows, orderBy, orderDirection) {
318
+ if (!orderBy)
319
+ return rows;
320
+ const direction = orderDirection === "asc" ? 1 : -1;
321
+ return [...rows].sort((left, right) => {
322
+ const leftValue = syncOrderValue(syncSortableValue(left), orderBy);
323
+ const rightValue = syncOrderValue(syncSortableValue(right), orderBy);
324
+ if (leftValue === rightValue)
325
+ return 0;
326
+ if (leftValue === null)
327
+ return 1;
328
+ if (rightValue === null)
329
+ return -1;
330
+ return leftValue < rightValue ? -direction : direction;
331
+ });
332
+ }
333
+ function syncSortableValue(value) {
334
+ if (value
335
+ && typeof value === "object"
336
+ && !Array.isArray(value)
337
+ && "collectionKey" in value
338
+ && "rowId" in value
339
+ && "rank" in value
340
+ && "value" in value) {
341
+ return value.value;
342
+ }
343
+ return value;
344
+ }
345
+ function syncOrderValue(value, orderBy) {
346
+ if (!value || Array.isArray(value) || typeof value !== "object")
347
+ return null;
348
+ const candidate = value[orderBy];
349
+ return typeof candidate === "string" || typeof candidate === "number" ? candidate : null;
350
+ }
351
+ function boundedRowRecords(rows, maxRows, maxBytes) {
352
+ const kept = [];
353
+ let bytes = 0;
354
+ for (const row of rows) {
355
+ if (maxRows && kept.length >= maxRows)
356
+ break;
357
+ if (maxBytes && bytes + row.sizeBytes > maxBytes)
358
+ break;
359
+ kept.push(row);
360
+ bytes += row.sizeBytes;
361
+ }
362
+ return kept;
363
+ }
364
+ function rowKey(value, keyField) {
365
+ if (!value || Array.isArray(value) || typeof value !== "object")
366
+ return "";
367
+ const key = value[keyField];
368
+ return key === null || key === undefined ? "" : String(key);
369
+ }
370
+ async function collectionKey(scope, path, args) {
371
+ return `${scope}:${await hashValue(`${path}\u0000${stableStringify(args)}`)}`;
372
+ }
373
+ async function hashValue(value) {
374
+ const subtle = globalThis.crypto?.subtle;
375
+ if (!subtle)
376
+ throw new Error("web-crypto-unavailable");
377
+ const digest = await subtle.digest("SHA-256", new TextEncoder().encode(value));
378
+ return Array.from(new Uint8Array(digest), (part) => part.toString(16).padStart(2, "0")).join("");
379
+ }
380
+ function stableStringify(value) {
381
+ if (value === null || typeof value !== "object")
382
+ return JSON.stringify(value);
383
+ if (Array.isArray(value))
384
+ return `[${value.map(stableStringify).join(",")}]`;
385
+ return `{${Object.keys(value)
386
+ .sort()
387
+ .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`)
388
+ .join(",")}}`;
389
+ }
390
+ function jsonSize(value) {
391
+ return new TextEncoder().encode(JSON.stringify(value)).byteLength;
392
+ }
393
+ function positive(value, fallback) {
394
+ return value !== undefined && Number.isFinite(value) && value > 0 ? value : fallback;
395
+ }
396
+ //# sourceMappingURL=sync-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-store.js","sourceRoot":"","sources":["../src/sync-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gonvex/client",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -14,7 +14,7 @@
14
14
  "types": "./dist/index.d.ts",
15
15
  "dependencies": {
16
16
  "dexie": "^4.4.4",
17
- "@gonvex/protocol": "0.1.13"
17
+ "@gonvex/protocol": "0.1.15"
18
18
  },
19
19
  "devDependencies": {
20
20
  "fake-indexeddb": "^6.2.4",