@peers-app/peers-device 0.8.23 → 0.9.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.
@@ -23,8 +23,6 @@ export { TTL0 } from "./device-messages";
23
23
  export declare class ConnectionManager {
24
24
  readonly userContext: UserContext;
25
25
  readonly changeTrackingTableFactory: (groupId?: string) => ChangeTrackingTable;
26
- private readonly localDevice;
27
- private readonly getGroupSecretKey;
28
26
  MAX_CONNECTIONS: number;
29
27
  get MAX_CONNECTIONS_TO_FORWARD_MESSAGES_TO(): number;
30
28
  set MAX_CONNECTIONS_TO_FORWARD_MESSAGES_TO(value: number);
@@ -54,9 +52,27 @@ export declare class ConnectionManager {
54
52
  [deviceId: string]: Connection;
55
53
  };
56
54
  private setupGroupsSubscriptions;
55
+ /**
56
+ * Called when a new group is added or re-enabled.
57
+ * Sets up the group member subscription and checks all existing connections
58
+ * for membership in the new group, confirming with the remote side first.
59
+ */
60
+ private setupGroup;
61
+ /**
62
+ * Called when a group is deleted or disabled.
63
+ * Cleans up the group member subscription, per-group connection state
64
+ * on all existing connections, and disposes the SyncGroup.
65
+ */
66
+ private teardownGroup;
57
67
  private setupGroupMembersSubscription;
58
68
  private setConnectionMembership;
59
69
  private getConnectionState;
70
+ /**
71
+ * Ask the remote device to confirm which groups it also recognizes as shared.
72
+ * Returns the subset of groupIds confirmed by the remote side.
73
+ * Retries once after a short delay if the first attempt fails (e.g., remote handler not ready yet).
74
+ */
75
+ private confirmSharedGroupsWithRemote;
60
76
  addConnection(connection: Connection): Promise<void>;
61
77
  removeConnection(connection: Connection): Promise<void>;
62
78
  getPeerGroupDevice(dataContext: DataContext): SyncGroup;
@@ -13,8 +13,6 @@ Object.defineProperty(exports, "TTL0", { enumerable: true, get: function () { re
13
13
  class ConnectionManager {
14
14
  userContext;
15
15
  changeTrackingTableFactory;
16
- localDevice;
17
- getGroupSecretKey;
18
16
  // TODO set this based on device type (desktops and servers should be able to handle much more than the default of 30)
19
17
  MAX_CONNECTIONS = peers_sdk_1.PeerDeviceConsts.MAX_CONNECTIONS;
20
18
  get MAX_CONNECTIONS_TO_FORWARD_MESSAGES_TO() {
@@ -38,8 +36,6 @@ class ConnectionManager {
38
36
  constructor(userContext, changeTrackingTableFactory, localDevice, getGroupSecretKey) {
39
37
  this.userContext = userContext;
40
38
  this.changeTrackingTableFactory = changeTrackingTableFactory;
41
- this.localDevice = localDevice;
42
- this.getGroupSecretKey = getGroupSecretKey;
43
39
  this.chunkDownloadManager = new chunk_download_manager_1.ChunkDownloadManager(this);
44
40
  this.deviceMessages = new device_messages_1.DeviceMessages({
45
41
  userContext,
@@ -133,10 +129,10 @@ class ConnectionManager {
133
129
  const groupsTable = (0, peers_sdk_1.Groups)(this.userContext.userDataContext);
134
130
  groupsTable.dataChanged.subscribe(evt => {
135
131
  if (evt.op === 'delete' || evt.dataObject.disabled) {
136
- this.groupMemberSubscriptionCleanups.get(evt.dataObject.groupId)?.();
132
+ this.teardownGroup(evt.dataObject.groupId);
137
133
  }
138
134
  else {
139
- this.setupGroupMembersSubscription(evt.dataObject.groupId);
135
+ this.setupGroup(evt.dataObject.groupId);
140
136
  }
141
137
  });
142
138
  this.getPeerGroupDevice(this.userContext.userDataContext); // ensure userSyncDevice is created and peerDevice is set on dataLocks table
@@ -144,6 +140,68 @@ class ConnectionManager {
144
140
  await this.setupGroupMembersSubscription(groupId);
145
141
  }
146
142
  }
143
+ /**
144
+ * Called when a new group is added or re-enabled.
145
+ * Sets up the group member subscription and checks all existing connections
146
+ * for membership in the new group, confirming with the remote side first.
147
+ */
148
+ async setupGroup(groupId) {
149
+ await this.setupGroupMembersSubscription(groupId);
150
+ // Check existing connections for membership in the new group
151
+ const dataContext = this.userContext.getDataContext(groupId);
152
+ const groupMembersTable = (0, peers_sdk_1.GroupMembers)(dataContext);
153
+ for (const connection of Array.from(this.connectionStates.keys())) {
154
+ const remoteUserId = connection.remoteDeviceInfo.userId;
155
+ let membership = await groupMembersTable.findOne({ userId: remoteUserId, groupId });
156
+ if (!membership) {
157
+ const role = await (0, peers_sdk_1.getUserRole)(groupId, remoteUserId);
158
+ if (role) {
159
+ membership = {
160
+ groupMemberId: '',
161
+ userId: remoteUserId,
162
+ groupId,
163
+ role,
164
+ signature: ''
165
+ };
166
+ }
167
+ }
168
+ if (membership && membership.role >= peers_sdk_1.GroupMemberRole.Writer) {
169
+ const confirmedGroupIds = await this.confirmSharedGroupsWithRemote(connection, [groupId]);
170
+ if (confirmedGroupIds.includes(groupId)) {
171
+ this.setConnectionMembership(connection, membership);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * Called when a group is deleted or disabled.
178
+ * Cleans up the group member subscription, per-group connection state
179
+ * on all existing connections, and disposes the SyncGroup.
180
+ */
181
+ teardownGroup(groupId) {
182
+ // Clean up group member subscription
183
+ this.groupMemberSubscriptionCleanups.get(groupId)?.();
184
+ // Clean up per-group state on all existing connections
185
+ for (const [connection, connectionState] of this.connectionStates.entries()) {
186
+ const disposeFn = connectionState.disposeFns[groupId];
187
+ if (disposeFn) {
188
+ try {
189
+ disposeFn();
190
+ }
191
+ catch (error) {
192
+ console.error(`Error disposing group ${groupId} on connection to ${connection.remoteDeviceInfo.deviceId}:`, error);
193
+ }
194
+ }
195
+ }
196
+ // Dispose and remove the SyncGroup
197
+ const syncGroup = this.syncGroups[groupId];
198
+ if (syncGroup) {
199
+ syncGroup.dispose().catch(err => {
200
+ console.error(`Error disposing SyncGroup for group ${groupId}:`, err);
201
+ });
202
+ delete this.syncGroups[groupId];
203
+ }
204
+ }
147
205
  async setupGroupMembersSubscription(groupId) {
148
206
  if (this.groupMemberSubscriptionCleanups.has(groupId)) {
149
207
  return;
@@ -233,6 +291,31 @@ class ConnectionManager {
233
291
  }
234
292
  return this.connectionStates.get(connection);
235
293
  }
294
+ /**
295
+ * Ask the remote device to confirm which groups it also recognizes as shared.
296
+ * Returns the subset of groupIds confirmed by the remote side.
297
+ * Retries once after a short delay if the first attempt fails (e.g., remote handler not ready yet).
298
+ */
299
+ async confirmSharedGroupsWithRemote(connection, groupIds) {
300
+ if (!groupIds.length)
301
+ return [];
302
+ const CONFIRM_TIMEOUT_MS = 5_000;
303
+ for (let attempt = 0; attempt < 2; attempt++) {
304
+ try {
305
+ return await Promise.race([
306
+ connection.emit('confirmSharedGroups', groupIds),
307
+ (0, peers_sdk_1.sleep)(CONFIRM_TIMEOUT_MS).then(() => { throw new Error('confirmSharedGroups timed out'); }),
308
+ ]);
309
+ }
310
+ catch (err) {
311
+ if (attempt === 0) {
312
+ await (0, peers_sdk_1.sleep)(1_000);
313
+ }
314
+ }
315
+ }
316
+ console.warn(`Could not confirm shared groups with device ${connection.remoteDeviceInfo.deviceId}, skipping group sync`);
317
+ return [];
318
+ }
236
319
  async addConnection(connection) {
237
320
  const remoteDeviceId = connection.remoteDeviceInfo.deviceId;
238
321
  if (this.connectionStates.has(connection)) {
@@ -258,6 +341,31 @@ class ConnectionManager {
258
341
  connection.exposeRPC('getFileChunkInfo', (chunkHash) => this.getFileChunkInfo(chunkHash));
259
342
  connection.exposeRPC('downloadFileChunk', (chunkHash) => this.chunkDownloadManager.getLocalChunk(chunkHash));
260
343
  connection.exposeRPC('sendDeviceMessage', (message) => this.sendDeviceMessage(message));
344
+ // RPC handler for remote devices to confirm which groups they share with us
345
+ connection.exposeRPC('confirmSharedGroups', async (groupIds) => {
346
+ const confirmedGroupIds = [];
347
+ const myGroupIds = this.userContext.groupIds();
348
+ for (const groupId of groupIds) {
349
+ if (!myGroupIds.includes(groupId))
350
+ continue;
351
+ const dataContext = this.userContext.getDataContext(groupId);
352
+ let membership = await (0, peers_sdk_1.GroupMembers)(dataContext).findOne({
353
+ userId: connection.remoteDeviceInfo.userId,
354
+ groupId,
355
+ });
356
+ if (!membership) {
357
+ const role = await (0, peers_sdk_1.getUserRole)(groupId, connection.remoteDeviceInfo.userId);
358
+ if (role && role >= peers_sdk_1.GroupMemberRole.Writer) {
359
+ confirmedGroupIds.push(groupId);
360
+ continue;
361
+ }
362
+ }
363
+ if (membership && membership.role >= peers_sdk_1.GroupMemberRole.Writer) {
364
+ confirmedGroupIds.push(groupId);
365
+ }
366
+ }
367
+ return confirmedGroupIds;
368
+ });
261
369
  // Streaming chunk download: reads chunks from disk and streams them via sendRawBytes
262
370
  if (connection.socket.sendRawBytes) {
263
371
  connection.exposeRPC('streamChunks', async (args) => {
@@ -302,6 +410,7 @@ class ConnectionManager {
302
410
  console.warn('Error retrying chunk downloads with new peer:', err);
303
411
  });
304
412
  const remoteUserId = connection.remoteDeviceInfo.userId;
413
+ // Same-user personal data sync doesn't need remote confirmation
305
414
  if (remoteUserId === this.userContext.userId) {
306
415
  this.setConnectionMembership(connection, {
307
416
  groupMemberId: '',
@@ -311,12 +420,9 @@ class ConnectionManager {
311
420
  signature: ''
312
421
  }, false, this.userContext.userDataContext);
313
422
  }
423
+ // Build candidate list of groups we think we share with this remote user
424
+ const candidateGroups = [];
314
425
  for (const dataContext of this.userContext.groupDataContexts.values()) {
315
- // if (dataContext.dataContextId === "00ml2qmor4za043giqb0iolld" && remoteUserId === "00ml2uyozrcgcv6wzmhtrn9wy") {
316
- // let membership = await GroupMembers(dataContext).findOne({ userId: remoteUserId, groupId: dataContext.dataContextId });
317
- // const role = await getUserRole(dataContext.dataContextId, remoteUserId);
318
- // console.log('games group', { role, membership });
319
- // }
320
426
  let membership = await (0, peers_sdk_1.GroupMembers)(dataContext).findOne({ userId: remoteUserId, groupId: dataContext.dataContextId });
321
427
  if (!membership && dataContext.groupId) {
322
428
  const role = await (0, peers_sdk_1.getUserRole)(dataContext.groupId, remoteUserId);
@@ -330,12 +436,18 @@ class ConnectionManager {
330
436
  };
331
437
  }
332
438
  }
333
- if (membership) {
334
- if (membership.role >= peers_sdk_1.GroupMemberRole.Writer) {
335
- this.setConnectionMembership(connection, membership);
336
- }
337
- else {
338
- // TODO special logic so < Writer can propagate signed blocks of changes
439
+ if (membership && membership.role >= peers_sdk_1.GroupMemberRole.Writer) {
440
+ candidateGroups.push({ membership, dataContext });
441
+ }
442
+ // TODO special logic so < Writer can propagate signed blocks of changes
443
+ }
444
+ // Ask the remote device to confirm which groups it also recognizes as shared
445
+ if (candidateGroups.length > 0) {
446
+ const candidateGroupIds = candidateGroups.map(c => c.membership.groupId);
447
+ const confirmedGroupIds = await this.confirmSharedGroupsWithRemote(connection, candidateGroupIds);
448
+ for (const { membership, dataContext } of candidateGroups) {
449
+ if (confirmedGroupIds.includes(membership.groupId)) {
450
+ this.setConnectionMembership(connection, membership, false, dataContext);
339
451
  }
340
452
  }
341
453
  }
@@ -365,6 +477,7 @@ class ConnectionManager {
365
477
  connection.removeAllListeners('downloadFileChunk');
366
478
  connection.removeAllListeners('streamChunks');
367
479
  connection.removeAllListeners('sendDeviceMessage');
480
+ connection.removeAllListeners('confirmSharedGroups');
368
481
  this.connectionStates.delete(connection);
369
482
  this.onConnectionRemoved(connection);
370
483
  return connection.close();
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/connection-manager/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/connection-manager/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export declare class DBLocal<T extends {
12
12
  private openDb;
13
13
  get(sql: string, params?: any): Promise<T | undefined>;
14
14
  all(sql: string, params?: any): Promise<T[]>;
15
- exec(sql: string, params?: any): Promise<void>;
15
+ exec(sql: string, params?: any): Promise<{
16
+ changes: number;
17
+ }>;
16
18
  execSync(sql: string, params?: any): void;
17
19
  getSync(sql: string, params?: any): T | undefined;
18
20
  allSync(sql: string, params?: any): T[];
@@ -100,7 +100,8 @@ class DBLocal {
100
100
  async exec(sql, params = []) {
101
101
  try {
102
102
  await this.openDb();
103
- this.db.prepare(sql).run(params);
103
+ const result = this.db.prepare(sql).run(params);
104
+ return { changes: result.changes };
104
105
  }
105
106
  catch (err) {
106
107
  // console.error(`error running db.exec`, sql, params, err);
@@ -1 +1 @@
1
- {"version":3,"file":"local.data-source.js","sourceRoot":"","sources":["../src/local.data-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.data-source.js","sourceRoot":"","sources":["../src/local.data-source.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,13 @@ export declare class SyncGroup implements IPeerDevice {
63
63
  private _syncWithRemoteDevice;
64
64
  applyChanges(changes: IChangeRecord[], remoteDevice?: IPeerDevice): Promise<void>;
65
65
  listChanges(filter?: DataFilter<IChangeRecord>, opts?: IDataQueryParams<IChangeRecord>): Promise<IChangeRecord[]>;
66
+ /**
67
+ * Resolve null values on insert changes (op: 'set', path: '/') by batch-looking up
68
+ * the current records from the appropriate source tables.
69
+ * This is needed because insert changes no longer store the full record value
70
+ * in the changes table to avoid doubling DB size or persisting inserts for old schemas.
71
+ */
72
+ private resolveInsertChangeValues;
66
73
  dispose(): Promise<void>;
67
74
  getNetworkInfo(): Promise<INetworkInfo>;
68
75
  private currentElectionPromise;
@@ -72,6 +79,14 @@ export declare class SyncGroup implements IPeerDevice {
72
79
  getRemoteNetworkInfo(device: string | IPeerDevice, opts?: {
73
80
  force?: boolean;
74
81
  }): Promise<INetworkInfo>;
82
+ /**
83
+ * Find and delete change tracking entries for tables that no longer exist.
84
+ * This can happen when a package (or its table definitions) is removed but
85
+ * the corresponding change records remain in the change tracking table.
86
+ *
87
+ * @returns The list of orphaned table names that were cleaned up.
88
+ */
89
+ cleanupOrphanedChangeTrackingEntries(): Promise<string[]>;
75
90
  compactDatabase(beforeTimestamp?: number): Promise<void>;
76
91
  resetAllDeviceSyncInfo(): Promise<void>;
77
92
  /**
@@ -270,26 +270,17 @@ class SyncGroup {
270
270
  if (connection?.timestampLastApplied && networkInfoStart.timestampLastApplied <= connection.timestampLastApplied) {
271
271
  return; // already synced
272
272
  }
273
- // TODO make sure we batch very large lists of changes in Files and Packages
274
- // Sync files first (needed for packages)
275
- const fileChanges = await remoteDevice.listChanges({
273
+ // Sync table definitions so we know about all table schemas before applying other changes
274
+ const tableDefChanges = await remoteDevice.listChanges({
276
275
  supersededAt: { $exists: false },
277
276
  appliedAt: { $gte: syncInfo.timestampAppliedLast },
278
- tableName: 'Files'
277
+ tableName: 'TableDefinitions'
279
278
  });
280
- if (fileChanges.length) {
281
- console.warn(`file changes found ${fileChanges.length}, applying first`);
282
- await this.applyChanges(fileChanges, remoteDevice);
283
- }
284
- // Sync packages before anything else so we have all tables and they are up-to-date
285
- const packageChanges = await remoteDevice.listChanges({
286
- supersededAt: { $exists: false },
287
- appliedAt: { $gte: syncInfo.timestampAppliedLast },
288
- tableName: 'Packages'
289
- });
290
- if ((packageChanges).length) {
291
- console.warn(`package changes found ${packageChanges.length}, applying first`);
292
- await this.applyChanges(packageChanges, remoteDevice);
279
+ if (tableDefChanges.length) {
280
+ console.warn(`table definition changes found ${tableDefChanges.length}, applying first`);
281
+ await this.applyChanges(tableDefChanges, remoteDevice);
282
+ // Fallback definitions are now auto-registered by TableContainer's dataChanged
283
+ // subscription on the TableDefinitions table (set up during getAllTables)
293
284
  }
294
285
  // // this is a hacky test to make sure connections can deal with incredibly large RPC args and results
295
286
  // const t0 = Date.now();
@@ -311,6 +302,7 @@ class SyncGroup {
311
302
  { appliedAt: { $gte: syncInfo.timestampAppliedLast } },
312
303
  // We don't want to go past the current applied changes because we might skip changes that are actively being synced from other device to the remote device
313
304
  { appliedAt: { $lte: networkInfoStart.timestampLastApplied } },
305
+ { tableName: { $nin: ['TableDefinitions'] } }
314
306
  ]
315
307
  }, { sortBy: ['createdAt'], pageSize: batchSize });
316
308
  const changeBatch = [];
@@ -373,14 +365,14 @@ class SyncGroup {
373
365
  tableTimestamps[c.tableName] = c.createdAt;
374
366
  }
375
367
  });
376
- // always load Users, Devices, Groups, PersistentVars, PeerTypes, and Packages first since they can affect how other tables are handled
368
+ // always load Users, Devices, Groups, PersistentVars, PeerTypes, Packages, and TableDefinitions first since they can affect how other tables are handled
377
369
  const tableNames = (0, lodash_1.sortBy)(Object.keys(tableTimestamps), (t) => {
378
- return t === "Users" ? -6 :
379
- t === "Devices" ? -5 :
380
- t === "Groups" ? -4 :
381
- t === "PersistentVars" ? -3 :
382
- t === "PeerTypes" ? -2 :
383
- t === "Packages" ? -1 :
370
+ return t === "Users" ? -7 :
371
+ t === "Devices" ? -6 :
372
+ t === "Groups" ? -5 :
373
+ t === "PersistentVars" ? -4 :
374
+ t === "PeerTypes" ? -3 :
375
+ t === "Packages" ? -2 :
384
376
  t === "Files" ? 0 :
385
377
  tableTimestamps[t];
386
378
  });
@@ -388,10 +380,14 @@ class SyncGroup {
388
380
  // WARNING: by grouping changes by table name, we're not necessarily applying them in the order they were created
389
381
  // this is a questionable decision that gives better performance but may lead to data integrity issues
390
382
  for (const tableName of tableNames) {
391
- const table = tables[tableName];
392
- if (!table) {
393
- throw new Error(`Table not found: ${tableName} - cannot continue with applyChanges`);
383
+ if (!tables[tableName]) {
384
+ const fallback = await this.tableContainer.getFallbackTable(tableName);
385
+ if (!fallback) {
386
+ throw new Error(`Table not found: ${tableName} - cannot continue with changes (no definition available)`);
387
+ }
388
+ tables[tableName] = fallback;
394
389
  }
390
+ const table = tables[tableName];
395
391
  let ds = table;
396
392
  while (typeof ds?.applyChanges !== 'function' && ds.dataSource) {
397
393
  ds = ds.dataSource;
@@ -407,7 +403,56 @@ class SyncGroup {
407
403
  }
408
404
  async listChanges(filter, opts) {
409
405
  SyncGroup.listChangesCount++;
410
- return this.changeTrackingTable.list(filter, opts);
406
+ const changes = await this.changeTrackingTable.list(filter, opts);
407
+ await this.resolveInsertChangeValues(changes);
408
+ return changes;
409
+ }
410
+ /**
411
+ * Resolve null values on insert changes (op: 'set', path: '/') by batch-looking up
412
+ * the current records from the appropriate source tables.
413
+ * This is needed because insert changes no longer store the full record value
414
+ * in the changes table to avoid doubling DB size or persisting inserts for old schemas.
415
+ */
416
+ async resolveInsertChangeValues(changes) {
417
+ // Find insert changes that need resolution (value is null/undefined)
418
+ const insertChanges = changes.filter(c => c.op === 'set' && c.path === '/' && (c.value === null || c.value === undefined));
419
+ if (insertChanges.length === 0)
420
+ return;
421
+ // Group by tableName so we can batch-lookup from the right table
422
+ const byTable = {};
423
+ for (const change of insertChanges) {
424
+ if (!byTable[change.tableName]) {
425
+ byTable[change.tableName] = [];
426
+ }
427
+ byTable[change.tableName].push(change);
428
+ }
429
+ for (const tableName of Object.keys(byTable)) {
430
+ let table;
431
+ try {
432
+ table = this.tableContainer.getTableByName(tableName);
433
+ }
434
+ catch (e) {
435
+ throw new Error(`[Sync Group] Cannot resolve insert change values: table "${tableName}" not found in tableContainer`);
436
+ }
437
+ const tableChanges = byTable[tableName];
438
+ const recordIds = [...new Set(tableChanges.map(c => c.recordId))];
439
+ const primaryKeyName = table.primaryKeyName || table.dataSource?.primaryKeyName;
440
+ try {
441
+ const records = await table.list({
442
+ [primaryKeyName]: { $in: recordIds },
443
+ });
444
+ const recordMap = new Map(records.map((r) => [r[primaryKeyName], r]));
445
+ for (const change of tableChanges) {
446
+ const record = recordMap.get(change.recordId);
447
+ if (record) {
448
+ change.value = record;
449
+ }
450
+ }
451
+ }
452
+ catch (e) {
453
+ throw new Error(`[Sync Group] Failed to resolve insert change values for table ${tableName}: ${e}`);
454
+ }
455
+ }
411
456
  }
412
457
  async dispose() {
413
458
  this.disposed = true;
@@ -527,11 +572,49 @@ class SyncGroup {
527
572
  throw err;
528
573
  });
529
574
  }
575
+ /**
576
+ * Find and delete change tracking entries for tables that no longer exist.
577
+ * This can happen when a package (or its table definitions) is removed but
578
+ * the corresponding change records remain in the change tracking table.
579
+ *
580
+ * @returns The list of orphaned table names that were cleaned up.
581
+ */
582
+ async cleanupOrphanedChangeTrackingEntries() {
583
+ const db = this.changeTrackingTable.db;
584
+ if (!db) {
585
+ throw new Error(`Database not ready`);
586
+ }
587
+ await this.changeTrackingTable.initTable();
588
+ const changeTrackingTableName = this.changeTrackingTable.metaData.name;
589
+ // Find orphaned table names: tracked in change tracking but no longer an actual table in the database
590
+ const orphanedRows = await db.all(`SELECT DISTINCT tableName FROM "${changeTrackingTableName}" WHERE tableName NOT IN (SELECT name FROM sqlite_master WHERE type = 'table')`);
591
+ const orphanedTableNames = orphanedRows.map((r) => r.tableName);
592
+ if (orphanedTableNames.length === 0) {
593
+ return [];
594
+ }
595
+ // Delete all orphaned entries in a single SQL call
596
+ const placeholders = orphanedTableNames.map(() => '?').join(', ');
597
+ await db.exec(`DELETE FROM "${changeTrackingTableName}" WHERE tableName IN (${placeholders})`, orphanedTableNames);
598
+ for (const tableName of orphanedTableNames) {
599
+ console.log(`Cleaned up orphaned change tracking entries for deleted table: ${tableName}`);
600
+ }
601
+ return orphanedTableNames;
602
+ }
530
603
  async compactDatabase(beforeTimestamp) {
531
604
  const db = this.changeTrackingTable.db;
532
605
  if (!db) {
533
606
  throw new Error(`Database not ready`);
534
607
  }
608
+ // Clean up change tracking entries for tables that no longer exist
609
+ try {
610
+ const orphaned = await this.cleanupOrphanedChangeTrackingEntries();
611
+ if (orphaned.length > 0) {
612
+ console.log(`Cleaned up orphaned change tracking entries for ${orphaned.length} deleted table(s): ${orphaned.join(', ')}`);
613
+ }
614
+ }
615
+ catch (err) {
616
+ console.warn(`Error cleaning up orphaned change tracking entries`, err);
617
+ }
535
618
  // delete and locks and their changes that are older than 1 day
536
619
  const dataLocksTableName = (0, peers_sdk_1.DataLocks)(this.dataContext).tableName;
537
620
  try {
@@ -540,7 +623,7 @@ class SyncGroup {
540
623
  // ensure tables are initialized
541
624
  await this.changeTrackingTable.initTable();
542
625
  await (0, peers_sdk_1.DataLocks)().list({}, { pageSize: 1 });
543
- await db.exec(`DELETE FROM ${changeTrackingTableId} WHERE tableName = ? AND timestamp < ?`, [dataLocksTableName, oneDayAgoMs]);
626
+ await db.exec(`DELETE FROM ${changeTrackingTableId} WHERE tableName = ? AND createdAt < ?`, [dataLocksTableName, oneDayAgoMs]);
544
627
  await db.exec(`DELETE FROM ${dataLocksTableName} WHERE lockedUntil < ?`, [oneDayAgoMs]);
545
628
  }
546
629
  catch (err) {