@peers-app/peers-device 0.7.25 → 0.7.26
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/dist/connection-manager/connection-manager.js +13 -0
- package/dist/connection-manager/connection-manager.js.map +1 -1
- package/dist/json-diff.d.ts +13 -1
- package/dist/json-diff.js +157 -25
- package/dist/json-diff.js.map +1 -1
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/dist/packages.tracked-data-source.d.ts +2 -2
- package/dist/packages.tracked-data-source.js.map +1 -1
- package/dist/pvars.tracked-data-source.d.ts +2 -2
- package/dist/pvars.tracked-data-source.js +16 -9
- package/dist/pvars.tracked-data-source.js.map +1 -1
- package/dist/sync-group.d.ts +8 -4
- package/dist/sync-group.js +37 -11
- package/dist/sync-group.js.map +1 -1
- package/dist/sync-group.test.js +150 -51
- package/dist/sync-group.test.js.map +1 -1
- package/dist/tracked-data-source.d.ts +41 -21
- package/dist/tracked-data-source.js +370 -252
- package/dist/tracked-data-source.js.map +1 -1
- package/dist/tracked-data-source.test.d.ts +3 -0
- package/dist/tracked-data-source.test.js +699 -781
- package/dist/tracked-data-source.test.js.map +1 -1
- package/package.json +3 -3
package/dist/sync-group.js
CHANGED
|
@@ -25,6 +25,7 @@ class SyncGroup {
|
|
|
25
25
|
static getNetworkInfoCount = 0;
|
|
26
26
|
static electPreferredConnectionsCount = 0;
|
|
27
27
|
static syncWithRemoteDeviceCount = 0;
|
|
28
|
+
static averageSyncTimeMs = { count: 0, avgTimeMs: 0 };
|
|
28
29
|
electionInterval = null;
|
|
29
30
|
preferredDeviceIds = [];
|
|
30
31
|
preferredByDeviceIds = [];
|
|
@@ -43,7 +44,7 @@ class SyncGroup {
|
|
|
43
44
|
this.userId = dataContext.userContext.userId;
|
|
44
45
|
this.deviceId = dataContext.userContext.deviceId();
|
|
45
46
|
// this.changeTrackingTable.dataChanged.subscribe(async evt => this.onNewChange(evt.dataObject));
|
|
46
|
-
this.changeTrackingTable.dataChanged.subscribe(async (evt) => this.onNewChange(evt.
|
|
47
|
+
this.changeTrackingTable.dataChanged.subscribe(async (evt) => this.onNewChange(evt.appliedAt));
|
|
47
48
|
this.electionInterval = setInterval(() => {
|
|
48
49
|
this.electPreferredConnections();
|
|
49
50
|
}, SyncGroup.RESYNC_INTERVAL);
|
|
@@ -63,10 +64,10 @@ class SyncGroup {
|
|
|
63
64
|
}
|
|
64
65
|
pendingChangeCount = 0;
|
|
65
66
|
pendingChangeTimeout = null;
|
|
66
|
-
onNewChange(
|
|
67
|
+
onNewChange(appliedAt) {
|
|
67
68
|
this.pendingChangeCount++;
|
|
68
|
-
if (this.timestampLastApplied <
|
|
69
|
-
this.timestampLastApplied =
|
|
69
|
+
if (this.timestampLastApplied < appliedAt) {
|
|
70
|
+
this.timestampLastApplied = appliedAt;
|
|
70
71
|
}
|
|
71
72
|
if (this.pendingChangeTimeout) {
|
|
72
73
|
if (this.pendingChangeCount > SyncGroup.CHANGES_PAGE_SIZE * 2) {
|
|
@@ -232,7 +233,20 @@ class SyncGroup {
|
|
|
232
233
|
}
|
|
233
234
|
syncPromise = Promise.resolve();
|
|
234
235
|
async syncWithRemoteDevice(remoteDevice, opts) {
|
|
235
|
-
this.syncPromise = this.syncPromise.then(
|
|
236
|
+
this.syncPromise = this.syncPromise.then(async () => {
|
|
237
|
+
const sTime = Date.now();
|
|
238
|
+
await this._syncWithRemoteDevice(remoteDevice, opts);
|
|
239
|
+
const syncTime = Date.now() - sTime;
|
|
240
|
+
const oldAvgTimeMs = SyncGroup.averageSyncTimeMs.avgTimeMs;
|
|
241
|
+
const oldCount = SyncGroup.averageSyncTimeMs.count;
|
|
242
|
+
const newCount = Math.min(oldCount + 1, 100);
|
|
243
|
+
const newAvgTimeMs = ((oldAvgTimeMs * oldCount) + syncTime) / newCount;
|
|
244
|
+
SyncGroup.averageSyncTimeMs = {
|
|
245
|
+
count: newCount,
|
|
246
|
+
avgTimeMs: newAvgTimeMs,
|
|
247
|
+
};
|
|
248
|
+
})
|
|
249
|
+
.catch(err => {
|
|
236
250
|
console.error('error syncing with remote device', err);
|
|
237
251
|
});
|
|
238
252
|
return this.syncPromise;
|
|
@@ -260,12 +274,24 @@ class SyncGroup {
|
|
|
260
274
|
const changeCursor = (0, peers_sdk_1.dataSourceCursor)({
|
|
261
275
|
primaryKeyName: 'changeId',
|
|
262
276
|
list: remoteDevice.listChanges.bind(remoteDevice),
|
|
263
|
-
}, {
|
|
277
|
+
}, {
|
|
278
|
+
// If we decide to support change history preservation, we'll need to set this conditionally
|
|
279
|
+
supersededAt: { $exists: false }, // No reason to sync changes that have been superseded if we don't have to
|
|
280
|
+
$and: [
|
|
281
|
+
{ appliedAt: { $gte: syncInfo.timestampAppliedLast } },
|
|
282
|
+
// We don't want to go past the current applied changes because we might skip changes that are actively being synced from other device so the remote device
|
|
283
|
+
{ appliedAt: { $lte: networkInfoStart.timestampLastApplied } },
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
// { appliedAt: { $gte: syncInfo.timestampAppliedLast }, supersededAt: { $exists: false } },
|
|
287
|
+
{ sortBy: ['createdAt'], pageSize: batchSize }
|
|
288
|
+
// { sortBy: ['createdAt', 'changeId'], pageSize: batchSize }
|
|
289
|
+
);
|
|
264
290
|
const changeBatch = [];
|
|
265
291
|
let maxTimestampApplied = syncInfo.timestampAppliedLast;
|
|
266
292
|
const applyBatch = async () => {
|
|
267
293
|
if (changeBatch.length) {
|
|
268
|
-
maxTimestampApplied = (0, lodash_1.max)([maxTimestampApplied, ...changeBatch.map(c => c.
|
|
294
|
+
maxTimestampApplied = (0, lodash_1.max)([maxTimestampApplied, ...changeBatch.map(c => c.appliedAt)]);
|
|
269
295
|
const sTime = Date.now();
|
|
270
296
|
await this.applyChanges(changeBatch, remoteDevice);
|
|
271
297
|
changeBatch.length = 0;
|
|
@@ -314,8 +340,8 @@ class SyncGroup {
|
|
|
314
340
|
async applyChanges(changes, remoteDevice) {
|
|
315
341
|
const tableTimestamps = {};
|
|
316
342
|
changes.forEach(c => {
|
|
317
|
-
if (c.
|
|
318
|
-
tableTimestamps[c.tableName] = c.
|
|
343
|
+
if (c.createdAt < (tableTimestamps[c.tableName] || Number.MAX_VALUE)) {
|
|
344
|
+
tableTimestamps[c.tableName] = c.createdAt;
|
|
319
345
|
}
|
|
320
346
|
});
|
|
321
347
|
// always load Users, Devices, Groups, PersistentVars, PeerTypes, and Packages first since they can affect how other tables are handled
|
|
@@ -376,9 +402,9 @@ class SyncGroup {
|
|
|
376
402
|
async getNetworkInfo() {
|
|
377
403
|
SyncGroup.getNetworkInfoCount++;
|
|
378
404
|
if (!this.timestampLastApplied) {
|
|
379
|
-
const lastChangesApplied = await this.changeTrackingTable.list({}, { sortBy: ['-
|
|
405
|
+
const lastChangesApplied = await this.changeTrackingTable.list({}, { sortBy: ['-appliedAt'], pageSize: 1 });
|
|
380
406
|
if (lastChangesApplied.length) {
|
|
381
|
-
this.timestampLastApplied = lastChangesApplied[0].
|
|
407
|
+
this.timestampLastApplied = lastChangesApplied[0].appliedAt;
|
|
382
408
|
}
|
|
383
409
|
}
|
|
384
410
|
const _machineStats = (0, machine_stats_1.machineStats)();
|
package/dist/sync-group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-group.js","sourceRoot":"","sources":["../src/sync-group.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-group.js","sourceRoot":"","sources":["../src/sync-group.ts"],"names":[],"mappings":"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"}
|
package/dist/sync-group.test.js
CHANGED
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
-
const sync_group_1 = require("./sync-group");
|
|
7
6
|
const local_data_source_1 = require("./local.data-source");
|
|
7
|
+
const sync_group_1 = require("./sync-group");
|
|
8
8
|
const tracked_data_source_1 = require("./tracked-data-source");
|
|
9
9
|
jest.setTimeout(240_000);
|
|
10
10
|
describe("peer-device", () => {
|
|
@@ -22,6 +22,7 @@ describe("peer-device", () => {
|
|
|
22
22
|
console.log("Elections count: ", sync_group_1.SyncGroup.electPreferredConnectionsCount);
|
|
23
23
|
console.log("Sync with remote device count: ", sync_group_1.SyncGroup.syncWithRemoteDeviceCount);
|
|
24
24
|
console.log("Total count: ", sync_group_1.SyncGroup.listChangesCount + sync_group_1.SyncGroup.applyChangesCount + sync_group_1.SyncGroup.getNetworkInfoCount + sync_group_1.SyncGroup.electPreferredConnectionsCount);
|
|
25
|
+
console.log("Average sync time (ms): ", sync_group_1.SyncGroup.averageSyncTimeMs.avgTimeMs);
|
|
25
26
|
});
|
|
26
27
|
const notesSchema = zod_1.z.object({
|
|
27
28
|
noteId: zod_1.z.string(),
|
|
@@ -41,7 +42,6 @@ describe("peer-device", () => {
|
|
|
41
42
|
function getNotesTable(peer) {
|
|
42
43
|
return peer.tableContainer.getTable(notesMetaData, notesSchema);
|
|
43
44
|
}
|
|
44
|
-
let dbId = 1;
|
|
45
45
|
function buildPeer(userId = (0, peers_sdk_1.newid)(), deviceId = (0, peers_sdk_1.newid)()) {
|
|
46
46
|
const db = new local_data_source_1.DBLocal(':memory:');
|
|
47
47
|
const changeTrackingTable = new peers_sdk_1.ChangeTrackingTable({ db });
|
|
@@ -55,6 +55,7 @@ describe("peer-device", () => {
|
|
|
55
55
|
return sqlDS;
|
|
56
56
|
}
|
|
57
57
|
const trackedDS = new tracked_data_source_1.TrackedDataSource(sqlDS, changeTrackingTable);
|
|
58
|
+
// trackedDS.preserveHistory = true;
|
|
58
59
|
return trackedDS;
|
|
59
60
|
}
|
|
60
61
|
};
|
|
@@ -130,41 +131,43 @@ describe("peer-device", () => {
|
|
|
130
131
|
const peerNotes = getNotesTable(peer);
|
|
131
132
|
const noteId = (0, peers_sdk_1.newid)();
|
|
132
133
|
const now = Date.now();
|
|
134
|
+
const noteUpdate2 = { noteId: noteId, title: "note updated" };
|
|
133
135
|
const change2 = {
|
|
134
136
|
changeId: (0, peers_sdk_1.newid)(),
|
|
135
137
|
tableName: notesTableName,
|
|
136
138
|
recordId: noteId,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
jsonDiff: [{ op: 'replace', path: '/title', value: 'note updated' }]
|
|
139
|
+
createdAt: now - 5000, // 5 seconds before change3
|
|
140
|
+
appliedAt: now - 5000,
|
|
141
|
+
op: 'set',
|
|
142
|
+
path: '/',
|
|
143
|
+
value: noteUpdate2,
|
|
143
144
|
};
|
|
144
145
|
await peer.applyChanges([change2]);
|
|
145
146
|
let note = await peerNotes.get(noteId);
|
|
146
|
-
expect(note).toEqual(
|
|
147
|
+
expect(note).toEqual(noteUpdate2);
|
|
148
|
+
const noteUpdate1 = { noteId: noteId, title: "note updated first" };
|
|
147
149
|
await peer.applyChanges([{
|
|
148
150
|
changeId: (0, peers_sdk_1.newid)(),
|
|
149
151
|
tableName: notesTableName,
|
|
150
152
|
recordId: noteId,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
createdAt: now - 6000,
|
|
154
|
+
appliedAt: now - 6000,
|
|
155
|
+
op: 'set',
|
|
156
|
+
path: '/',
|
|
157
|
+
value: noteUpdate1,
|
|
156
158
|
}]);
|
|
157
159
|
note = await peerNotes.get(noteId);
|
|
158
|
-
expect(note).toEqual(
|
|
160
|
+
expect(note).toEqual(noteUpdate2);
|
|
159
161
|
// Create changes with different timestamps (newer to older)
|
|
160
162
|
const change3 = {
|
|
161
163
|
changeId: (0, peers_sdk_1.newid)(),
|
|
162
164
|
tableName: notesTableName,
|
|
163
165
|
recordId: noteId,
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
createdAt: now,
|
|
167
|
+
appliedAt: now,
|
|
168
|
+
op: 'delete',
|
|
169
|
+
path: '/',
|
|
170
|
+
value: null,
|
|
168
171
|
};
|
|
169
172
|
await peer.applyChanges([change3]);
|
|
170
173
|
note = await peerNotes.get(noteId);
|
|
@@ -173,10 +176,11 @@ describe("peer-device", () => {
|
|
|
173
176
|
changeId: (0, peers_sdk_1.newid)(),
|
|
174
177
|
tableName: notesTableName,
|
|
175
178
|
recordId: noteId,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
createdAt: now - 10000, // 10 seconds before change3
|
|
180
|
+
appliedAt: now - 10000,
|
|
181
|
+
op: 'set',
|
|
182
|
+
path: '/',
|
|
183
|
+
value: { noteId: noteId, title: "Note inserted" }
|
|
180
184
|
};
|
|
181
185
|
await peer.applyChanges([change1]);
|
|
182
186
|
note = await peerNotes.get(noteId);
|
|
@@ -415,7 +419,75 @@ describe("peer-device", () => {
|
|
|
415
419
|
const notes2 = await peer2Notes.list();
|
|
416
420
|
expect(notes1).toEqual(notes2);
|
|
417
421
|
});
|
|
418
|
-
it("should
|
|
422
|
+
it("syncing should be resilient to a high volume of changes being written as it's syncing", async () => {
|
|
423
|
+
// Create two peers
|
|
424
|
+
const peer1 = buildPeer();
|
|
425
|
+
const peer2 = buildPeer();
|
|
426
|
+
const peer3 = buildPeer();
|
|
427
|
+
// Get notes tables
|
|
428
|
+
const peer1Notes = getNotesTable(peer1);
|
|
429
|
+
const peer2Notes = getNotesTable(peer2);
|
|
430
|
+
const peer3Notes = getNotesTable(peer3);
|
|
431
|
+
// have one peer making many inserts/updates/deletes while the other two are syncing
|
|
432
|
+
let finished = false;
|
|
433
|
+
const writer = setTimeout(async () => {
|
|
434
|
+
for (const i of (0, lodash_1.range)(100)) {
|
|
435
|
+
await peer1Notes.save({ noteId: (0, peers_sdk_1.newid)(), title: `Note ${i}` });
|
|
436
|
+
}
|
|
437
|
+
const sTime = Date.now();
|
|
438
|
+
while (Date.now() - sTime < 4_000) {
|
|
439
|
+
// create many inserts, updates, and deletes in all of them
|
|
440
|
+
for (const syncBatch of (0, lodash_1.range)(10)) {
|
|
441
|
+
for (const table of [peer1Notes]) {
|
|
442
|
+
const allNotes = await table.list();
|
|
443
|
+
for (const note of allNotes) {
|
|
444
|
+
const rand = Math.random();
|
|
445
|
+
if (rand < 0.05) {
|
|
446
|
+
await table.delete(note.noteId);
|
|
447
|
+
}
|
|
448
|
+
else if (rand < 0.95) {
|
|
449
|
+
note.title = `Updated ${note.title} ${Math.random().toString().substring(1, 2)} - ${syncBatch}`;
|
|
450
|
+
await table.save(note);
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
await table.save({ noteId: (0, peers_sdk_1.newid)(), title: `new note - ${syncBatch}` });
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
await (0, peers_sdk_1.sleep)(100);
|
|
459
|
+
}
|
|
460
|
+
finished = true;
|
|
461
|
+
});
|
|
462
|
+
// let writer get ahead
|
|
463
|
+
await (0, peers_sdk_1.sleep)(1000);
|
|
464
|
+
// start syncing
|
|
465
|
+
while (!finished) {
|
|
466
|
+
await Promise.all([
|
|
467
|
+
peer2.syncWithRemoteDevice(peer1),
|
|
468
|
+
peer3.syncWithRemoteDevice(peer2),
|
|
469
|
+
]);
|
|
470
|
+
await (0, peers_sdk_1.sleep)(10);
|
|
471
|
+
}
|
|
472
|
+
// do final sync
|
|
473
|
+
await Promise.all([
|
|
474
|
+
peer2.syncWithRemoteDevice(peer1),
|
|
475
|
+
peer3.syncWithRemoteDevice(peer1),
|
|
476
|
+
]);
|
|
477
|
+
await (0, peers_sdk_1.sleep)(100);
|
|
478
|
+
const peer1FinalNotes = await peer1Notes.list();
|
|
479
|
+
const peer2FinalNotes = await peer2Notes.list();
|
|
480
|
+
const peer3FinalNotes = await peer3Notes.list();
|
|
481
|
+
expect(peer1FinalNotes).toEqual(peer2FinalNotes);
|
|
482
|
+
expect(peer1FinalNotes).toEqual(peer3FinalNotes);
|
|
483
|
+
console.log(`Final note count: ${peer1FinalNotes.length}`);
|
|
484
|
+
clearTimeout(writer);
|
|
485
|
+
});
|
|
486
|
+
/*
|
|
487
|
+
NOTE: This is a very good test to make sure everything is working.
|
|
488
|
+
If there is any problem with the syncing algorithm this test seems to be the mostly likely to fail.
|
|
489
|
+
*/
|
|
490
|
+
it("IMPORTANT! should handle conflicts from three peers being offline and many changes occurring", async () => {
|
|
419
491
|
// Create two peers
|
|
420
492
|
const peer1 = buildPeer();
|
|
421
493
|
const peer2 = buildPeer();
|
|
@@ -437,7 +509,7 @@ describe("peer-device", () => {
|
|
|
437
509
|
]);
|
|
438
510
|
const end = Date.now();
|
|
439
511
|
const syncTime = end - start;
|
|
440
|
-
|
|
512
|
+
console.log(`Sync time: ${syncTime}ms`);
|
|
441
513
|
// verify they have the same notes
|
|
442
514
|
const notes1 = await peer1Notes.list();
|
|
443
515
|
const notes2 = await peer2Notes.list();
|
|
@@ -473,6 +545,29 @@ describe("peer-device", () => {
|
|
|
473
545
|
}
|
|
474
546
|
// verify they sync to the same state
|
|
475
547
|
await assertSync();
|
|
548
|
+
// We actually don't want sync changes that are superseded by later changes if we don't have to
|
|
549
|
+
// const missingChangesIds = [];
|
|
550
|
+
// const peer1Changes = await peer1.listChanges();
|
|
551
|
+
// const peer2Changes = await peer2.listChanges();
|
|
552
|
+
// const peer3Changes = await peer3.listChanges();
|
|
553
|
+
// for (const change of peer1Changes) {
|
|
554
|
+
// if (!peer2Changes.find(c => c.changeId === change.changeId) || !peer3Changes.find(c => c.changeId === change.changeId)) {
|
|
555
|
+
// missingChangesIds.push(change.changeId);
|
|
556
|
+
// console.log(`Missing change ${change.changeId} in peer2 or peer3`);
|
|
557
|
+
// }
|
|
558
|
+
// }
|
|
559
|
+
// for (const change of peer2Changes) {
|
|
560
|
+
// if (!peer1Changes.find(c => c.changeId === change.changeId) || !peer3Changes.find(c => c.changeId === change.changeId)) {
|
|
561
|
+
// missingChangesIds.push(change.changeId);
|
|
562
|
+
// console.log(`Missing change ${change.changeId} in peer1 or peer3`);
|
|
563
|
+
// }
|
|
564
|
+
// }
|
|
565
|
+
// for (const change of peer3Changes) {
|
|
566
|
+
// if (!peer1Changes.find(c => c.changeId === change.changeId) || !peer2Changes.find(c => c.changeId === change.changeId)) {
|
|
567
|
+
// missingChangesIds.push(change.changeId);
|
|
568
|
+
// console.log(`Missing change ${change.changeId} in peer1 or peer2`);
|
|
569
|
+
// }
|
|
570
|
+
// }
|
|
476
571
|
});
|
|
477
572
|
it("should work with multiple tables and multiple peers with all different field types", async () => {
|
|
478
573
|
const peer1 = buildPeer();
|
|
@@ -942,7 +1037,7 @@ describe("peer-device", () => {
|
|
|
942
1037
|
expect(notes1).toEqual(notes4);
|
|
943
1038
|
});
|
|
944
1039
|
// unreliable for CI/CD so skipping. Use for local dev only
|
|
945
|
-
it
|
|
1040
|
+
it("after syncing with a peers, should skip forward to that peer's timestampAppliedLast for all it's connections", async () => {
|
|
946
1041
|
// NOTE: I confirmed via execution time that this is working.
|
|
947
1042
|
// Speedup is dependent on amount of data to sync and page size of sync.
|
|
948
1043
|
// It is significant for large data sets, but not for small ones.
|
|
@@ -1028,7 +1123,7 @@ describe("peer-device", () => {
|
|
|
1028
1123
|
// }
|
|
1029
1124
|
// }
|
|
1030
1125
|
// wait for all peers to sync
|
|
1031
|
-
await (0, peers_sdk_1.sleep)(
|
|
1126
|
+
await (0, peers_sdk_1.sleep)(2000);
|
|
1032
1127
|
const myNotes = await getNotesTable(peers[0]).list();
|
|
1033
1128
|
expect(myNotes.length).toBeGreaterThan(peerCnt);
|
|
1034
1129
|
for (const peer of peers) {
|
|
@@ -1045,7 +1140,7 @@ describe("peer-device", () => {
|
|
|
1045
1140
|
});
|
|
1046
1141
|
it.skip([
|
|
1047
1142
|
`should not slow down as data accumulates many changes`,
|
|
1048
|
-
`(this is a long running that is left skipped unless explicitly checking for performance problems with syncing)`
|
|
1143
|
+
`(this is a long running test that is left skipped unless explicitly checking for performance problems with syncing)`
|
|
1049
1144
|
].join('\n '), async () => {
|
|
1050
1145
|
// Create peers
|
|
1051
1146
|
const peer1 = buildPeer();
|
|
@@ -1541,24 +1636,25 @@ describe("peer-device", () => {
|
|
|
1541
1636
|
await Promise.all(peers.map(peer => peer.dispose()));
|
|
1542
1637
|
});
|
|
1543
1638
|
// For some reason this test fails when run with the rest but works when run alone
|
|
1544
|
-
it.skip("should
|
|
1639
|
+
it.skip("should handle a change has data that doesn't match the schema", async () => {
|
|
1545
1640
|
const peer1 = buildPeer();
|
|
1546
1641
|
const peer2 = buildPeer();
|
|
1547
1642
|
const peer1Notes = getNotesTable(peer1);
|
|
1548
1643
|
const peer2Notes = getNotesTable(peer2);
|
|
1549
1644
|
const noteId = (0, peers_sdk_1.newid)();
|
|
1550
|
-
|
|
1551
|
-
|
|
1645
|
+
await peer1Notes.save({ noteId, title: "note inserted" });
|
|
1646
|
+
await peer1Notes.save({ noteId: (0, peers_sdk_1.newid)(), title: "note inserted" });
|
|
1552
1647
|
const now = Date.now();
|
|
1553
1648
|
await peer1.changeTrackingTable.insert({
|
|
1554
1649
|
changeId: (0, peers_sdk_1.newid)(),
|
|
1555
1650
|
tableName: notesTableName,
|
|
1556
1651
|
recordId: noteId,
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1652
|
+
createdAt: now,
|
|
1653
|
+
appliedAt: now,
|
|
1654
|
+
op: 'set',
|
|
1655
|
+
path: '/',
|
|
1656
|
+
// @ts-expect-error setting `title: string` to a number to simulate bad data
|
|
1657
|
+
value: { noteId, title: 1 },
|
|
1562
1658
|
});
|
|
1563
1659
|
await peer2.syncWithRemoteDevice(peer1);
|
|
1564
1660
|
let notes1 = await peer1Notes.list();
|
|
@@ -1579,35 +1675,38 @@ describe("peer-device", () => {
|
|
|
1579
1675
|
const peer1 = buildPeer();
|
|
1580
1676
|
const peer1Notes = getNotesTable(peer1);
|
|
1581
1677
|
const recordId = (0, peers_sdk_1.newid)();
|
|
1678
|
+
const ts = (0, peers_sdk_1.getTimestamp)();
|
|
1582
1679
|
await peer1.applyChanges([
|
|
1583
1680
|
{
|
|
1584
1681
|
changeId: (0, peers_sdk_1.newid)(),
|
|
1585
1682
|
tableName: notesTableName,
|
|
1586
1683
|
recordId,
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1684
|
+
createdAt: ts,
|
|
1685
|
+
appliedAt: ts,
|
|
1686
|
+
op: 'set',
|
|
1687
|
+
path: '/',
|
|
1688
|
+
value: { noteId: recordId, title: "note inserted" },
|
|
1591
1689
|
},
|
|
1592
|
-
// @ts-ignore
|
|
1593
1690
|
{
|
|
1594
1691
|
changeId: (0, peers_sdk_1.newid)(),
|
|
1595
1692
|
tableName: notesTableName,
|
|
1596
1693
|
recordId,
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1694
|
+
createdAt: ts + 1,
|
|
1695
|
+
appliedAt: ts + 1,
|
|
1696
|
+
// @ts-expect-error invalid op
|
|
1697
|
+
op: 'junk',
|
|
1698
|
+
path: '/string',
|
|
1699
|
+
value: "junk updated",
|
|
1601
1700
|
},
|
|
1602
1701
|
{
|
|
1603
1702
|
changeId: (0, peers_sdk_1.newid)(),
|
|
1604
1703
|
tableName: notesTableName,
|
|
1605
1704
|
recordId,
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1705
|
+
createdAt: ts + 2,
|
|
1706
|
+
appliedAt: ts + 2,
|
|
1707
|
+
op: 'set',
|
|
1708
|
+
path: '/title',
|
|
1709
|
+
value: "note updated",
|
|
1611
1710
|
}
|
|
1612
1711
|
]);
|
|
1613
1712
|
const notes = await peer1Notes.list();
|
|
@@ -1616,6 +1715,6 @@ describe("peer-device", () => {
|
|
|
1616
1715
|
it.todo("should establish connections with remote peers to try to become 'well' connected");
|
|
1617
1716
|
it.todo("should correctly apply a batch of changes that includes multiple tables with interleaved timestamps");
|
|
1618
1717
|
it.todo("should ensure connected devices agree on the current time");
|
|
1619
|
-
it.todo("should not allow changes with a timestamp or
|
|
1718
|
+
it.todo("should not allow changes with a timestamp or appliedAt in the future");
|
|
1620
1719
|
});
|
|
1621
1720
|
//# sourceMappingURL=sync-group.test.js.map
|