@laboverwire/stitch 0.4.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.
Files changed (136) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/LICENSE +201 -0
  3. package/README.md +39 -0
  4. package/dist/index.d.ts +10 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +9 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/internal-list-apply.d.ts +5 -0
  9. package/dist/internal-list-apply.d.ts.map +1 -0
  10. package/dist/internal-list-apply.js +30 -0
  11. package/dist/internal-list-apply.js.map +1 -0
  12. package/dist/internal-utils.d.ts +3 -0
  13. package/dist/internal-utils.d.ts.map +1 -0
  14. package/dist/internal-utils.js +15 -0
  15. package/dist/internal-utils.js.map +1 -0
  16. package/dist/internal-wasm-error.d.ts +9 -0
  17. package/dist/internal-wasm-error.d.ts.map +1 -0
  18. package/dist/internal-wasm-error.js +48 -0
  19. package/dist/internal-wasm-error.js.map +1 -0
  20. package/dist/memory-store.d.ts +3 -0
  21. package/dist/memory-store.d.ts.map +1 -0
  22. package/dist/memory-store.js +572 -0
  23. package/dist/memory-store.js.map +1 -0
  24. package/dist/offline-queue.d.ts +6 -0
  25. package/dist/offline-queue.d.ts.map +1 -0
  26. package/dist/offline-queue.js +361 -0
  27. package/dist/offline-queue.js.map +1 -0
  28. package/dist/persistence-layer.d.ts +7 -0
  29. package/dist/persistence-layer.d.ts.map +1 -0
  30. package/dist/persistence-layer.js +409 -0
  31. package/dist/persistence-layer.js.map +1 -0
  32. package/dist/react/context.d.ts +10 -0
  33. package/dist/react/context.d.ts.map +1 -0
  34. package/dist/react/context.js +9 -0
  35. package/dist/react/context.js.map +1 -0
  36. package/dist/react/hooks/useChildCounts.d.ts +3 -0
  37. package/dist/react/hooks/useChildCounts.d.ts.map +1 -0
  38. package/dist/react/hooks/useChildCounts.js +85 -0
  39. package/dist/react/hooks/useChildCounts.js.map +1 -0
  40. package/dist/react/hooks/useConnectionStatus.d.ts +3 -0
  41. package/dist/react/hooks/useConnectionStatus.d.ts.map +1 -0
  42. package/dist/react/hooks/useConnectionStatus.js +9 -0
  43. package/dist/react/hooks/useConnectionStatus.js.map +1 -0
  44. package/dist/react/hooks/useEntitySnapshot.d.ts +4 -0
  45. package/dist/react/hooks/useEntitySnapshot.d.ts.map +1 -0
  46. package/dist/react/hooks/useEntitySnapshot.js +33 -0
  47. package/dist/react/hooks/useEntitySnapshot.js.map +1 -0
  48. package/dist/react/hooks/useRootEntityList.d.ts +9 -0
  49. package/dist/react/hooks/useRootEntityList.d.ts.map +1 -0
  50. package/dist/react/hooks/useRootEntityList.js +69 -0
  51. package/dist/react/hooks/useRootEntityList.js.map +1 -0
  52. package/dist/react/hooks/useScopedEntities.d.ts +9 -0
  53. package/dist/react/hooks/useScopedEntities.d.ts.map +1 -0
  54. package/dist/react/hooks/useScopedEntities.js +82 -0
  55. package/dist/react/hooks/useScopedEntities.js.map +1 -0
  56. package/dist/react/hooks/useSyncScope.d.ts +8 -0
  57. package/dist/react/hooks/useSyncScope.d.ts.map +1 -0
  58. package/dist/react/hooks/useSyncScope.js +49 -0
  59. package/dist/react/hooks/useSyncScope.js.map +1 -0
  60. package/dist/react/hooks/useTopLevelEntities.d.ts +7 -0
  61. package/dist/react/hooks/useTopLevelEntities.d.ts.map +1 -0
  62. package/dist/react/hooks/useTopLevelEntities.js +52 -0
  63. package/dist/react/hooks/useTopLevelEntities.js.map +1 -0
  64. package/dist/react/index.d.ts +11 -0
  65. package/dist/react/index.d.ts.map +1 -0
  66. package/dist/react/index.js +10 -0
  67. package/dist/react/index.js.map +1 -0
  68. package/dist/react/provider.d.ts +32 -0
  69. package/dist/react/provider.d.ts.map +1 -0
  70. package/dist/react/provider.js +94 -0
  71. package/dist/react/provider.js.map +1 -0
  72. package/dist/remote-sync-layer.d.ts +8 -0
  73. package/dist/remote-sync-layer.d.ts.map +1 -0
  74. package/dist/remote-sync-layer.js +439 -0
  75. package/dist/remote-sync-layer.js.map +1 -0
  76. package/dist/store.d.ts +3 -0
  77. package/dist/store.d.ts.map +1 -0
  78. package/dist/store.js +779 -0
  79. package/dist/store.js.map +1 -0
  80. package/dist/sync-engine.d.ts +3 -0
  81. package/dist/sync-engine.d.ts.map +1 -0
  82. package/dist/sync-engine.js +643 -0
  83. package/dist/sync-engine.js.map +1 -0
  84. package/dist/types.d.ts +263 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +7 -0
  87. package/dist/types.js.map +1 -0
  88. package/dist/vue/StitchAuth.d.ts +58 -0
  89. package/dist/vue/StitchAuth.d.ts.map +1 -0
  90. package/dist/vue/StitchAuth.js +39 -0
  91. package/dist/vue/StitchAuth.js.map +1 -0
  92. package/dist/vue/StoreRoot.d.ts +41 -0
  93. package/dist/vue/StoreRoot.d.ts.map +1 -0
  94. package/dist/vue/StoreRoot.js +94 -0
  95. package/dist/vue/StoreRoot.js.map +1 -0
  96. package/dist/vue/composables/useChildCounts.d.ts +4 -0
  97. package/dist/vue/composables/useChildCounts.d.ts.map +1 -0
  98. package/dist/vue/composables/useChildCounts.js +85 -0
  99. package/dist/vue/composables/useChildCounts.js.map +1 -0
  100. package/dist/vue/composables/useConnectionStatus.d.ts +4 -0
  101. package/dist/vue/composables/useConnectionStatus.d.ts.map +1 -0
  102. package/dist/vue/composables/useConnectionStatus.js +12 -0
  103. package/dist/vue/composables/useConnectionStatus.js.map +1 -0
  104. package/dist/vue/composables/useEntitySnapshot.d.ts +5 -0
  105. package/dist/vue/composables/useEntitySnapshot.d.ts.map +1 -0
  106. package/dist/vue/composables/useEntitySnapshot.js +41 -0
  107. package/dist/vue/composables/useEntitySnapshot.js.map +1 -0
  108. package/dist/vue/composables/useRootEntityList.d.ts +10 -0
  109. package/dist/vue/composables/useRootEntityList.d.ts.map +1 -0
  110. package/dist/vue/composables/useRootEntityList.js +76 -0
  111. package/dist/vue/composables/useRootEntityList.js.map +1 -0
  112. package/dist/vue/composables/useScopedEntities.d.ts +10 -0
  113. package/dist/vue/composables/useScopedEntities.d.ts.map +1 -0
  114. package/dist/vue/composables/useScopedEntities.js +91 -0
  115. package/dist/vue/composables/useScopedEntities.js.map +1 -0
  116. package/dist/vue/composables/useStore.d.ts +3 -0
  117. package/dist/vue/composables/useStore.d.ts.map +1 -0
  118. package/dist/vue/composables/useStore.js +9 -0
  119. package/dist/vue/composables/useStore.js.map +1 -0
  120. package/dist/vue/composables/useSyncScope.d.ts +9 -0
  121. package/dist/vue/composables/useSyncScope.d.ts.map +1 -0
  122. package/dist/vue/composables/useSyncScope.js +50 -0
  123. package/dist/vue/composables/useSyncScope.js.map +1 -0
  124. package/dist/vue/composables/useTopLevelEntities.d.ts +8 -0
  125. package/dist/vue/composables/useTopLevelEntities.d.ts.map +1 -0
  126. package/dist/vue/composables/useTopLevelEntities.js +58 -0
  127. package/dist/vue/composables/useTopLevelEntities.js.map +1 -0
  128. package/dist/vue/index.d.ts +13 -0
  129. package/dist/vue/index.d.ts.map +1 -0
  130. package/dist/vue/index.js +12 -0
  131. package/dist/vue/index.js.map +1 -0
  132. package/dist/vue/injection-key.d.ts +10 -0
  133. package/dist/vue/injection-key.d.ts.map +1 -0
  134. package/dist/vue/injection-key.js +2 -0
  135. package/dist/vue/injection-key.js.map +1 -0
  136. package/package.json +111 -0
@@ -0,0 +1,572 @@
1
+ import { wrapWasmError, isCorruptionError } from "./internal-wasm-error.js";
2
+ function stripNulls(obj) {
3
+ const result = {};
4
+ for (const [key, value] of Object.entries(obj)) {
5
+ if (value != null) {
6
+ result[key] = value;
7
+ }
8
+ }
9
+ return result;
10
+ }
11
+ function topologicalDeleteOrder(entities, config) {
12
+ const entitySet = new Set(entities);
13
+ const refCounts = new Map();
14
+ for (const e of entities)
15
+ refCounts.set(e, 0);
16
+ for (const e of entities) {
17
+ const def = config.entities[e];
18
+ if (!def?.foreignKeys)
19
+ continue;
20
+ for (const fk of def.foreignKeys) {
21
+ if (entitySet.has(fk.references)) {
22
+ refCounts.set(e, (refCounts.get(e) ?? 0) + 1);
23
+ }
24
+ }
25
+ }
26
+ return [...entities].sort((a, b) => (refCounts.get(b) ?? 0) - (refCounts.get(a) ?? 0));
27
+ }
28
+ class MemoryStoreImpl {
29
+ _db = null;
30
+ _dbReady = false;
31
+ _initPromise = null;
32
+ _wasmReady = false;
33
+ _corrupted = false;
34
+ _initWasm = null;
35
+ _Database = null;
36
+ config;
37
+ allEntities;
38
+ versions = new Map();
39
+ listSnapshots = new Map();
40
+ mapSnapshots = new Map();
41
+ subscribers = new Map();
42
+ globalSubscribers = new Map();
43
+ mutationListeners = new Set();
44
+ batchDepth = 0;
45
+ batchedKeys = new Set();
46
+ batchedMutations = [];
47
+ originTag = null;
48
+ wasmSubIds = [];
49
+ lastOriginTag = null;
50
+ pendingDeleteContext = null;
51
+ pendingInitCallbacks = [];
52
+ corruptionCallbacks = new Set();
53
+ constructor(config) {
54
+ this.config = config;
55
+ this.allEntities = [
56
+ config.scope.rootEntity,
57
+ ...config.scope.childEntities,
58
+ ...(config.topLevelEntities?.map((t) => t.entity) ?? []),
59
+ ];
60
+ }
61
+ ensureReady() {
62
+ if (this._dbReady)
63
+ return Promise.resolve();
64
+ if (!this._initPromise) {
65
+ this._initPromise = this.doInit();
66
+ }
67
+ return this._initPromise;
68
+ }
69
+ async doInit() {
70
+ try {
71
+ if (!this._initWasm) {
72
+ const mod = await import('mqdb-wasm');
73
+ this._initWasm = mod.default;
74
+ this._Database = mod.Database;
75
+ }
76
+ try {
77
+ await this._initWasm();
78
+ }
79
+ catch (err) {
80
+ throw wrapWasmError('init', err);
81
+ }
82
+ this._wasmReady = true;
83
+ this.initDb();
84
+ this.notifyAllGlobalSubscribers();
85
+ const cbs = this.pendingInitCallbacks;
86
+ this.pendingInitCallbacks = [];
87
+ for (const cb of cbs)
88
+ cb();
89
+ }
90
+ catch (err) {
91
+ this._initPromise = null;
92
+ throw err;
93
+ }
94
+ }
95
+ initDb() {
96
+ if (this._dbReady)
97
+ return;
98
+ if (!this._wasmReady || !this._Database)
99
+ return;
100
+ this._db = new this._Database();
101
+ this._dbReady = true;
102
+ this.registerSchemas();
103
+ this.setupSubscriptions();
104
+ }
105
+ get isReady() {
106
+ return this._dbReady;
107
+ }
108
+ get corrupted() {
109
+ return this._corrupted;
110
+ }
111
+ onCorruption(callback) {
112
+ this.corruptionCallbacks.add(callback);
113
+ return () => {
114
+ this.corruptionCallbacks.delete(callback);
115
+ };
116
+ }
117
+ get db() {
118
+ if (this._corrupted) {
119
+ if (!this.tryRecover()) {
120
+ throw new Error('WASM database is corrupted');
121
+ }
122
+ }
123
+ if (!this._dbReady) {
124
+ this.ensureReady();
125
+ throw new Error('WASM not initialized yet');
126
+ }
127
+ return this._db;
128
+ }
129
+ tryRecover() {
130
+ if (!this._wasmReady || !this._Database)
131
+ return false;
132
+ try {
133
+ const testDb = new this._Database();
134
+ testDb.listSync('__test__', {});
135
+ testDb.free();
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ try {
141
+ this._db = new this._Database();
142
+ this._corrupted = false;
143
+ this._dbReady = true;
144
+ this.registerSchemas();
145
+ this.setupSubscriptions();
146
+ this.clearAllCaches();
147
+ console.warn('[MemoryStore] WASM recovered — reinitialized in-memory database');
148
+ return true;
149
+ }
150
+ catch {
151
+ return false;
152
+ }
153
+ }
154
+ isWasmCorrupted(err) {
155
+ return isCorruptionError(err);
156
+ }
157
+ notifyCorruption() {
158
+ for (const cb of this.corruptionCallbacks) {
159
+ try {
160
+ cb();
161
+ }
162
+ catch { }
163
+ }
164
+ }
165
+ clearAllCaches() {
166
+ this.listSnapshots.clear();
167
+ this.mapSnapshots.clear();
168
+ this.versions.clear();
169
+ }
170
+ notifyAllGlobalSubscribers() {
171
+ for (const entity of this.allEntities) {
172
+ const subs = this.globalSubscribers.get(entity);
173
+ if (subs) {
174
+ for (const cb of subs)
175
+ cb();
176
+ }
177
+ }
178
+ for (const [, scopeMap] of this.subscribers) {
179
+ for (const [, entitySubs] of scopeMap) {
180
+ for (const cb of entitySubs)
181
+ cb();
182
+ }
183
+ }
184
+ }
185
+ onReady(callback) {
186
+ if (this._dbReady) {
187
+ callback();
188
+ }
189
+ else {
190
+ this.pendingInitCallbacks.push(callback);
191
+ this.ensureReady();
192
+ }
193
+ }
194
+ registerSchemasOn(db) {
195
+ const { entities } = this.config;
196
+ for (const [entity, definition] of Object.entries(entities)) {
197
+ db.addSchema(entity, definition);
198
+ if (definition.indexes) {
199
+ for (const field of definition.indexes) {
200
+ db.addIndex(entity, [field]);
201
+ }
202
+ }
203
+ }
204
+ }
205
+ registerSchemas() {
206
+ this.registerSchemasOn(this._db);
207
+ }
208
+ unsubscribeAll() {
209
+ if (this._db) {
210
+ for (const subId of this.wasmSubIds) {
211
+ try {
212
+ this._db.unsubscribe(subId);
213
+ }
214
+ catch { }
215
+ }
216
+ }
217
+ this.wasmSubIds = [];
218
+ }
219
+ setupSubscriptions() {
220
+ this.unsubscribeAll();
221
+ for (const entity of this.allEntities) {
222
+ const subId = this.db.subscribe('#', entity, (event) => {
223
+ try {
224
+ this.handleChangeEvent(entity, event);
225
+ }
226
+ catch (err) {
227
+ console.error(`[MemoryStore] subscription callback error for ${entity}:`, err);
228
+ }
229
+ });
230
+ this.wasmSubIds.push(subId);
231
+ }
232
+ }
233
+ handleChangeEvent(entity, event) {
234
+ this.lastOriginTag = this.originTag;
235
+ const { rootEntity, scopeField } = this.config.scope;
236
+ let scopeId;
237
+ if (event.operation === 'delete') {
238
+ scopeId =
239
+ this.pendingDeleteContext?.scopeId ?? (entity === rootEntity ? event.id : undefined);
240
+ if (!scopeId)
241
+ return;
242
+ }
243
+ else if (entity === rootEntity) {
244
+ scopeId = event.id;
245
+ }
246
+ else {
247
+ scopeId = event.data?.[scopeField];
248
+ if (!scopeId)
249
+ return;
250
+ }
251
+ this.bumpVersion(scopeId, entity);
252
+ const mutation = {
253
+ operation: event.operation,
254
+ entity,
255
+ id: event.id,
256
+ scopeId,
257
+ data: event.data,
258
+ originTag: this.originTag,
259
+ };
260
+ if (this.batchDepth > 0) {
261
+ this.batchedKeys.add(`${scopeId}\0${entity}`);
262
+ this.batchedMutations.push(mutation);
263
+ return;
264
+ }
265
+ this.notifySubscribers(scopeId, entity);
266
+ this.emitMutation(mutation);
267
+ }
268
+ bumpVersion(scopeId, entity) {
269
+ if (!this.versions.has(scopeId)) {
270
+ this.versions.set(scopeId, new Map());
271
+ }
272
+ const entityVersions = this.versions.get(scopeId);
273
+ entityVersions.set(entity, (entityVersions.get(entity) ?? 0) + 1);
274
+ }
275
+ getVersion(scopeId, entity) {
276
+ return this.versions.get(scopeId)?.get(entity) ?? 0;
277
+ }
278
+ notifySubscribers(scopeId, entity) {
279
+ const scopeSubs = this.subscribers.get(scopeId)?.get(entity);
280
+ if (scopeSubs) {
281
+ for (const cb of scopeSubs)
282
+ cb();
283
+ }
284
+ const globalSubs = this.globalSubscribers.get(entity);
285
+ if (globalSubs) {
286
+ for (const cb of globalSubs)
287
+ cb();
288
+ }
289
+ }
290
+ emitMutation(event) {
291
+ for (const listener of this.mutationListeners) {
292
+ try {
293
+ listener(event);
294
+ }
295
+ catch (err) {
296
+ console.error('[MemoryStore] mutation listener error:', err);
297
+ }
298
+ }
299
+ }
300
+ onMutation(listener) {
301
+ this.mutationListeners.add(listener);
302
+ return () => {
303
+ this.mutationListeners.delete(listener);
304
+ };
305
+ }
306
+ getLastOriginTag() {
307
+ return this.lastOriginTag;
308
+ }
309
+ subscribeToScope(scopeId, entity, callback) {
310
+ if (!this.subscribers.has(scopeId)) {
311
+ this.subscribers.set(scopeId, new Map());
312
+ }
313
+ const scopeMap = this.subscribers.get(scopeId);
314
+ if (!scopeMap.has(entity)) {
315
+ scopeMap.set(entity, new Set());
316
+ }
317
+ scopeMap.get(entity).add(callback);
318
+ return () => {
319
+ scopeMap.get(entity)?.delete(callback);
320
+ if (scopeMap.get(entity)?.size === 0) {
321
+ scopeMap.delete(entity);
322
+ }
323
+ if (scopeMap.size === 0) {
324
+ this.subscribers.delete(scopeId);
325
+ }
326
+ };
327
+ }
328
+ subscribeToEntity(entity, callback) {
329
+ if (!this.globalSubscribers.has(entity)) {
330
+ this.globalSubscribers.set(entity, new Set());
331
+ }
332
+ this.globalSubscribers.get(entity).add(callback);
333
+ return () => {
334
+ this.globalSubscribers.get(entity)?.delete(callback);
335
+ };
336
+ }
337
+ listRecords(entity, scopeId) {
338
+ if (!this._dbReady || this._corrupted)
339
+ return [];
340
+ const { rootEntity, scopeField } = this.config.scope;
341
+ const filterField = entity === rootEntity ? 'id' : scopeField;
342
+ try {
343
+ return this._db.listSync(entity, {
344
+ filters: [{ field: filterField, op: 'eq', value: scopeId }],
345
+ });
346
+ }
347
+ catch (err) {
348
+ const wrapped = wrapWasmError(`listSync:${entity}`, err);
349
+ if (this.isWasmCorrupted(err)) {
350
+ console.error('[MemoryStore] WASM corruption:', wrapped);
351
+ this._corrupted = true;
352
+ this.notifyCorruption();
353
+ if (this.tryRecover()) {
354
+ return [];
355
+ }
356
+ }
357
+ else {
358
+ console.error(wrapped);
359
+ }
360
+ return [];
361
+ }
362
+ }
363
+ getSnapshot(entity, scopeId) {
364
+ const version = this.getVersion(scopeId, entity);
365
+ if (!this.listSnapshots.has(scopeId)) {
366
+ this.listSnapshots.set(scopeId, new Map());
367
+ }
368
+ const entityMap = this.listSnapshots.get(scopeId);
369
+ const cached = entityMap.get(entity);
370
+ if (cached && cached.version === version)
371
+ return cached.data;
372
+ const records = this.listRecords(entity, scopeId);
373
+ entityMap.set(entity, { version, data: records });
374
+ return records;
375
+ }
376
+ getSnapshotAsMap(entity, scopeId) {
377
+ const version = this.getVersion(scopeId, entity);
378
+ if (!this.mapSnapshots.has(scopeId)) {
379
+ this.mapSnapshots.set(scopeId, new Map());
380
+ }
381
+ const entityMap = this.mapSnapshots.get(scopeId);
382
+ const cached = entityMap.get(entity);
383
+ if (cached && cached.version === version)
384
+ return cached.data;
385
+ const records = this.listRecords(entity, scopeId);
386
+ const map = {};
387
+ for (const r of records) {
388
+ map[r.id] = r;
389
+ }
390
+ entityMap.set(entity, { version, data: map });
391
+ return map;
392
+ }
393
+ create(entity, scopeId, data, tag) {
394
+ if (this._corrupted)
395
+ return;
396
+ try {
397
+ this.originTag = tag ?? null;
398
+ const { rootEntity, scopeField } = this.config.scope;
399
+ const record = entity === rootEntity ? stripNulls(data) : stripNulls({ ...data, [scopeField]: scopeId });
400
+ this.db.createSync(entity, record);
401
+ }
402
+ catch (err) {
403
+ console.error(wrapWasmError(`createSync:${entity}`, err));
404
+ }
405
+ finally {
406
+ this.originTag = null;
407
+ }
408
+ }
409
+ update(entity, id, fields, tag) {
410
+ if (this._corrupted)
411
+ return;
412
+ try {
413
+ this.originTag = tag ?? null;
414
+ this.db.updateSync(entity, id, stripNulls(fields));
415
+ }
416
+ catch (err) {
417
+ console.error(wrapWasmError(`updateSync:${entity}`, err));
418
+ }
419
+ finally {
420
+ this.originTag = null;
421
+ }
422
+ }
423
+ read(entity, id) {
424
+ if (this._corrupted)
425
+ return null;
426
+ try {
427
+ return this.db.readSync(entity, id);
428
+ }
429
+ catch {
430
+ return null;
431
+ }
432
+ }
433
+ delete(entity, id, tag) {
434
+ if (this._corrupted)
435
+ return;
436
+ try {
437
+ this.originTag = tag ?? null;
438
+ const record = this.read(entity, id);
439
+ if (!record)
440
+ return;
441
+ const scopeField = this.config.scope.scopeField;
442
+ this.pendingDeleteContext = { scopeId: record[scopeField] };
443
+ this.db.deleteSync(entity, id);
444
+ }
445
+ catch (err) {
446
+ console.error(wrapWasmError(`deleteSync:${entity}`, err));
447
+ }
448
+ finally {
449
+ this.originTag = null;
450
+ this.pendingDeleteContext = null;
451
+ }
452
+ }
453
+ list(entity, scopeId) {
454
+ return this.listRecords(entity, scopeId);
455
+ }
456
+ loadScope(scopeId, data, tag) {
457
+ if (!this._Database)
458
+ return;
459
+ const newDb = new this._Database();
460
+ this.registerSchemasOn(newDb);
461
+ const scopeField = this.config.scope.scopeField;
462
+ for (const [entity, records] of Object.entries(data)) {
463
+ for (const record of records) {
464
+ try {
465
+ const rec = { ...record, [scopeField]: scopeId };
466
+ newDb.createSync(entity, rec);
467
+ }
468
+ catch (err) {
469
+ console.error(wrapWasmError(`loadScope.createSync:${entity}`, err));
470
+ }
471
+ }
472
+ }
473
+ this.unsubscribeAll();
474
+ this._db = newDb;
475
+ this._corrupted = false;
476
+ this._dbReady = true;
477
+ this.setupSubscriptions();
478
+ this.clearAllCaches();
479
+ this.originTag = tag ?? null;
480
+ try {
481
+ for (const entity of this.allEntities) {
482
+ this.bumpVersion(scopeId, entity);
483
+ this.notifySubscribers(scopeId, entity);
484
+ }
485
+ }
486
+ finally {
487
+ this.originTag = null;
488
+ }
489
+ }
490
+ beginBatch() {
491
+ this.batchDepth++;
492
+ }
493
+ endBatch() {
494
+ if (this.batchDepth <= 0)
495
+ return;
496
+ this.batchDepth--;
497
+ if (this.batchDepth > 0)
498
+ return;
499
+ const keys = this.batchedKeys;
500
+ const mutations = this.batchedMutations;
501
+ this.batchedKeys = new Set();
502
+ this.batchedMutations = [];
503
+ for (const key of keys) {
504
+ try {
505
+ const [scopeId, entity] = key.split('\0');
506
+ this.notifySubscribers(scopeId, entity);
507
+ }
508
+ catch (err) {
509
+ console.error('[MemoryStore] endBatch subscriber error:', err);
510
+ }
511
+ }
512
+ for (const mutation of mutations) {
513
+ this.emitMutation(mutation);
514
+ }
515
+ }
516
+ clearScope(scopeId) {
517
+ if (this._corrupted) {
518
+ this.clearAllCaches();
519
+ return;
520
+ }
521
+ let recoveredDuringClear = false;
522
+ this.originTag = 'clear';
523
+ this.beginBatch();
524
+ try {
525
+ for (const entity of topologicalDeleteOrder(this.allEntities, this.config)) {
526
+ if (this._corrupted) {
527
+ recoveredDuringClear = true;
528
+ break;
529
+ }
530
+ const records = this.listRecords(entity, scopeId);
531
+ if (this._corrupted) {
532
+ recoveredDuringClear = true;
533
+ break;
534
+ }
535
+ for (const record of records) {
536
+ try {
537
+ this.pendingDeleteContext = { scopeId };
538
+ this.db.deleteSync(entity, record.id);
539
+ }
540
+ catch {
541
+ // cascade
542
+ }
543
+ finally {
544
+ this.pendingDeleteContext = null;
545
+ }
546
+ }
547
+ }
548
+ }
549
+ finally {
550
+ this.originTag = null;
551
+ if (recoveredDuringClear) {
552
+ this.batchDepth = Math.max(0, this.batchDepth - 1);
553
+ this.batchedKeys = new Set();
554
+ this.batchedMutations = [];
555
+ }
556
+ else {
557
+ this.endBatch();
558
+ }
559
+ }
560
+ if (this.listSnapshots.has(scopeId)) {
561
+ this.listSnapshots.delete(scopeId);
562
+ }
563
+ if (this.mapSnapshots.has(scopeId)) {
564
+ this.mapSnapshots.delete(scopeId);
565
+ }
566
+ this.versions.delete(scopeId);
567
+ }
568
+ }
569
+ export function createMemoryStore(config) {
570
+ return new MemoryStoreImpl(config);
571
+ }
572
+ //# sourceMappingURL=memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { OfflineQueue, PersistenceLayer } from './types.ts';
2
+ export declare function createPersistentOfflineQueue(persistence: PersistenceLayer, rootEntity: string): OfflineQueue & {
3
+ setAuthenticatedUser(userId: string | null): void;
4
+ };
5
+ export declare function createInMemoryOfflineQueue(rootEntity: string): OfflineQueue;
6
+ //# sourceMappingURL=offline-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offline-queue.d.ts","sourceRoot":"","sources":["../src/offline-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAmYpB,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,gBAAgB,EAC7B,UAAU,EAAE,MAAM,GACjB,YAAY,GAAG;IAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAAE,CAEtE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAE3E"}