@livestore/common 0.0.0-snapshot-2b8a9de3ec1a701aca891ebc2c98eb328274ae9e → 0.0.0-snapshot-2ef046b02334f52613d31dbe06af53487685edc0

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 (98) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-types.d.ts +4 -11
  3. package/dist/adapter-types.d.ts.map +1 -1
  4. package/dist/adapter-types.js +0 -6
  5. package/dist/adapter-types.js.map +1 -1
  6. package/dist/devtools/devtools-messages-common.d.ts +7 -0
  7. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  8. package/dist/devtools/devtools-messages-common.js +6 -0
  9. package/dist/devtools/devtools-messages-common.js.map +1 -1
  10. package/dist/devtools/devtools-messages-leader.d.ts +1 -1
  11. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  12. package/dist/devtools/devtools-messages-leader.js +1 -2
  13. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  14. package/dist/leader-thread/LeaderSyncProcessor.d.ts +15 -6
  15. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  16. package/dist/leader-thread/LeaderSyncProcessor.js +199 -189
  17. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  18. package/dist/leader-thread/apply-mutation.d.ts +14 -9
  19. package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
  20. package/dist/leader-thread/apply-mutation.js +43 -36
  21. package/dist/leader-thread/apply-mutation.js.map +1 -1
  22. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  23. package/dist/leader-thread/leader-worker-devtools.js +2 -5
  24. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  25. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  26. package/dist/leader-thread/make-leader-thread-layer.js +21 -33
  27. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  28. package/dist/leader-thread/mod.d.ts +1 -1
  29. package/dist/leader-thread/mod.d.ts.map +1 -1
  30. package/dist/leader-thread/mod.js +1 -1
  31. package/dist/leader-thread/mod.js.map +1 -1
  32. package/dist/leader-thread/mutationlog.d.ts +19 -3
  33. package/dist/leader-thread/mutationlog.d.ts.map +1 -1
  34. package/dist/leader-thread/mutationlog.js +105 -12
  35. package/dist/leader-thread/mutationlog.js.map +1 -1
  36. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  37. package/dist/leader-thread/recreate-db.js +4 -3
  38. package/dist/leader-thread/recreate-db.js.map +1 -1
  39. package/dist/leader-thread/types.d.ts +35 -19
  40. package/dist/leader-thread/types.d.ts.map +1 -1
  41. package/dist/leader-thread/types.js.map +1 -1
  42. package/dist/rehydrate-from-mutationlog.d.ts +5 -4
  43. package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
  44. package/dist/rehydrate-from-mutationlog.js +7 -9
  45. package/dist/rehydrate-from-mutationlog.js.map +1 -1
  46. package/dist/schema/EventId.d.ts +4 -0
  47. package/dist/schema/EventId.d.ts.map +1 -1
  48. package/dist/schema/EventId.js +7 -1
  49. package/dist/schema/EventId.js.map +1 -1
  50. package/dist/schema/MutationEvent.d.ts +78 -25
  51. package/dist/schema/MutationEvent.d.ts.map +1 -1
  52. package/dist/schema/MutationEvent.js +25 -12
  53. package/dist/schema/MutationEvent.js.map +1 -1
  54. package/dist/schema/schema.js +1 -1
  55. package/dist/schema/schema.js.map +1 -1
  56. package/dist/schema/system-tables.d.ts +67 -0
  57. package/dist/schema/system-tables.d.ts.map +1 -1
  58. package/dist/schema/system-tables.js +12 -1
  59. package/dist/schema/system-tables.js.map +1 -1
  60. package/dist/sync/ClientSessionSyncProcessor.d.ts +9 -1
  61. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  62. package/dist/sync/ClientSessionSyncProcessor.js +23 -19
  63. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  64. package/dist/sync/sync.d.ts +6 -5
  65. package/dist/sync/sync.d.ts.map +1 -1
  66. package/dist/sync/sync.js.map +1 -1
  67. package/dist/sync/syncstate.d.ts +47 -71
  68. package/dist/sync/syncstate.d.ts.map +1 -1
  69. package/dist/sync/syncstate.js +76 -112
  70. package/dist/sync/syncstate.js.map +1 -1
  71. package/dist/sync/syncstate.test.js +67 -139
  72. package/dist/sync/syncstate.test.js.map +1 -1
  73. package/package.json +2 -2
  74. package/src/adapter-types.ts +3 -12
  75. package/src/devtools/devtools-messages-common.ts +9 -0
  76. package/src/devtools/devtools-messages-leader.ts +1 -2
  77. package/src/leader-thread/LeaderSyncProcessor.ts +372 -348
  78. package/src/leader-thread/apply-mutation.ts +81 -71
  79. package/src/leader-thread/leader-worker-devtools.ts +3 -8
  80. package/src/leader-thread/make-leader-thread-layer.ts +26 -41
  81. package/src/leader-thread/mod.ts +1 -1
  82. package/src/leader-thread/mutationlog.ts +166 -13
  83. package/src/leader-thread/recreate-db.ts +4 -3
  84. package/src/leader-thread/types.ts +34 -23
  85. package/src/rehydrate-from-mutationlog.ts +12 -12
  86. package/src/schema/EventId.ts +8 -1
  87. package/src/schema/MutationEvent.ts +32 -16
  88. package/src/schema/schema.ts +1 -1
  89. package/src/schema/system-tables.ts +20 -1
  90. package/src/sync/ClientSessionSyncProcessor.ts +33 -25
  91. package/src/sync/sync.ts +6 -9
  92. package/src/sync/syncstate.test.ts +130 -208
  93. package/src/sync/syncstate.ts +76 -123
  94. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  95. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  96. package/dist/leader-thread/pull-queue-set.js +0 -48
  97. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  98. package/src/leader-thread/pull-queue-set.ts +0 -67
@@ -34,300 +34,252 @@ const isEqualEvent = MutationEvent.isEqualEncoded;
34
34
  const isClientEvent = (event) => event.isLocal;
35
35
  describe('syncstate', () => {
36
36
  describe('merge', () => {
37
- const update = ({ syncState, payload, ignoreClientEvents = false, }) => SyncState.merge({ syncState, payload, isClientEvent, isEqualEvent, ignoreClientEvents });
38
- describe.each([{ trimRollbackUntil: false }, { trimRollbackUntil: true }])('upstream-rebase (trimRollbackUntil: $trimRollbackUntil)', ({ trimRollbackUntil }) => {
37
+ const merge = ({ syncState, payload, ignoreClientEvents = false, }) => SyncState.merge({ syncState, payload, isClientEvent, isEqualEvent, ignoreClientEvents });
38
+ describe('upstream-rebase', () => {
39
39
  it('should rollback until start', () => {
40
40
  const syncState = new SyncState.SyncState({
41
41
  pending: [e_1_0],
42
- rollbackTail: [e_0_0, e_0_1],
43
42
  upstreamHead: EventId.ROOT,
44
43
  localHead: e_1_0.id,
45
44
  });
46
45
  const e_0_0_e_1_0 = e_0_0.rebase_(e_1_0.id);
47
46
  const e_0_1_e_1_1 = e_0_1.rebase_(e_0_0_e_1_0.id);
48
- const result = update({
47
+ const result = merge({
49
48
  syncState,
50
- payload: {
51
- _tag: 'upstream-rebase',
52
- rollbackUntil: e_0_0.id,
49
+ payload: SyncState.PayloadUpstreamRebase.make({
50
+ rollbackEvents: [e_0_0, e_0_1],
53
51
  newEvents: [e_0_0_e_1_0, e_0_1_e_1_1],
54
- trimRollbackUntil: trimRollbackUntil ? e_0_1_e_1_1.id : undefined,
55
- },
52
+ }),
56
53
  });
57
54
  const e_1_0_e_2_0 = e_1_0.rebase_(e_0_0_e_1_0.id);
58
55
  expectRebase(result);
59
56
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0_e_2_0]);
60
- if (trimRollbackUntil) {
61
- expectEventArraysEqual(result.newSyncState.rollbackTail, []);
62
- }
63
- else {
64
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0_e_1_0, e_0_1_e_1_1]);
65
- }
66
57
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_1.id);
67
58
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
68
59
  expectEventArraysEqual(result.newEvents, [e_0_0_e_1_0, e_0_1_e_1_1, e_1_0_e_2_0]);
69
- expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1, e_1_0]);
60
+ expectEventArraysEqual(result.rollbackEvents, [e_0_0, e_0_1, e_1_0]);
70
61
  });
71
62
  it('should rollback only to specified point', () => {
72
63
  const syncState = new SyncState.SyncState({
73
64
  pending: [e_1_0],
74
- rollbackTail: [e_0_0, e_0_1],
75
65
  upstreamHead: EventId.ROOT,
76
66
  localHead: e_1_0.id,
77
67
  });
78
68
  const e_0_1_e_1_0 = e_0_1.rebase_(e_0_0.id);
79
- const result = update({
69
+ const result = merge({
80
70
  syncState,
81
- payload: {
82
- _tag: 'upstream-rebase',
83
- rollbackUntil: e_0_1.id,
71
+ payload: SyncState.PayloadUpstreamRebase.make({
84
72
  newEvents: [e_0_1_e_1_0],
85
- trimRollbackUntil: trimRollbackUntil ? e_0_0.id : undefined,
86
- },
73
+ rollbackEvents: [e_0_1],
74
+ }),
87
75
  });
88
76
  const e_1_0_e_2_0 = e_1_0.rebase_(e_0_1_e_1_0.id);
89
77
  expectRebase(result);
90
78
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0_e_2_0]);
91
- if (trimRollbackUntil) {
92
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1_e_1_0]);
93
- }
94
- else {
95
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1_e_1_0]);
96
- }
97
79
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_0.id);
98
80
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
99
81
  expectEventArraysEqual(result.newEvents, [e_0_1_e_1_0, e_1_0_e_2_0]);
100
- expectEventArraysEqual(result.eventsToRollback, [e_0_1, e_1_0]);
82
+ expectEventArraysEqual(result.rollbackEvents, [e_0_1, e_1_0]);
101
83
  });
102
84
  it('should work for empty pending', () => {
103
85
  const syncState = new SyncState.SyncState({
104
86
  pending: [],
105
- rollbackTail: [e_0_0],
106
87
  upstreamHead: EventId.ROOT,
107
88
  localHead: e_0_0.id,
108
89
  });
109
- const result = update({
90
+ const result = merge({
110
91
  syncState,
111
- payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [e_1_0] },
92
+ payload: SyncState.PayloadUpstreamRebase.make({ rollbackEvents: [e_0_0], newEvents: [e_1_0] }),
112
93
  });
113
94
  expectRebase(result);
114
95
  expectEventArraysEqual(result.newSyncState.pending, []);
115
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_1_0]);
116
96
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
117
97
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
118
98
  expect(result.newEvents).toStrictEqual([e_1_0]);
119
99
  });
120
- it('should fail for empty rollback tail', () => {
121
- const syncState = new SyncState.SyncState({
122
- pending: [],
123
- rollbackTail: [],
124
- upstreamHead: EventId.ROOT,
125
- localHead: e_0_0.id,
126
- });
127
- const result = update({
128
- syncState,
129
- payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [e_1_0] },
130
- });
131
- expect(result).toMatchObject({ _tag: 'unexpected-error' });
132
- });
133
100
  it('should work for empty incoming', () => {
134
101
  const syncState = new SyncState.SyncState({
135
102
  pending: [],
136
- rollbackTail: [e_0_0],
137
103
  upstreamHead: EventId.ROOT,
138
104
  localHead: e_0_0.id,
139
105
  });
140
- const result = update({
106
+ const result = merge({
141
107
  syncState,
142
- payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [] },
108
+ payload: SyncState.PayloadUpstreamRebase.make({ rollbackEvents: [e_0_0], newEvents: [] }),
143
109
  });
144
110
  expectRebase(result);
145
111
  expectEventArraysEqual(result.newSyncState.pending, []);
146
- expectEventArraysEqual(result.newSyncState.rollbackTail, []);
147
112
  expect(result.newSyncState.upstreamHead).toMatchObject(EventId.ROOT);
148
113
  expect(result.newSyncState.localHead).toMatchObject(EventId.ROOT);
149
- expect(result.newEvents).toStrictEqual([]);
114
+ expectEventArraysEqual(result.newEvents, []);
150
115
  });
151
116
  });
152
117
  describe('upstream-advance: advance', () => {
153
118
  it('should throw error if newEvents are not sorted in ascending order by eventId (client)', () => {
154
119
  const syncState = new SyncState.SyncState({
155
120
  pending: [e_0_0],
156
- rollbackTail: [],
157
121
  upstreamHead: EventId.ROOT,
158
122
  localHead: e_0_0.id,
159
123
  });
160
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_0] } });
124
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_0] } });
161
125
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
162
126
  });
163
127
  it('should throw error if newEvents are not sorted in ascending order by eventId (global)', () => {
164
128
  const syncState = new SyncState.SyncState({
165
129
  pending: [e_0_0],
166
- rollbackTail: [],
167
130
  upstreamHead: EventId.ROOT,
168
131
  localHead: e_0_0.id,
169
132
  });
170
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0, e_0_0] } });
133
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0, e_0_0] } });
171
134
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
172
135
  });
173
136
  it('should throw error if incoming event is < expected upstream head', () => {
174
137
  const syncState = new SyncState.SyncState({
175
138
  pending: [],
176
- rollbackTail: [],
177
139
  upstreamHead: e_1_0.id,
178
140
  localHead: e_1_0.id,
179
141
  });
180
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
142
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
181
143
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
182
144
  });
183
145
  it('should throw error if incoming event is = expected upstream head', () => {
184
146
  const syncState = new SyncState.SyncState({
185
147
  pending: [],
186
- rollbackTail: [],
187
148
  upstreamHead: e_1_0.id,
188
149
  localHead: e_1_0.id,
189
150
  });
190
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0] } });
151
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0] } });
191
152
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
192
153
  });
193
154
  it('should throw if the parent id of the first incoming event is unknown', () => {
194
155
  const syncState = new SyncState.SyncState({
195
156
  pending: [],
196
- rollbackTail: [e_0_0],
197
157
  upstreamHead: EventId.ROOT,
198
158
  localHead: e_0_0.id,
199
159
  });
200
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_2_0] } });
160
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_2_0] } });
201
161
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
202
162
  });
203
- it('should acknowledge pending event when receiving matching event', () => {
163
+ it('should confirm pending event when receiving matching event', () => {
204
164
  const syncState = new SyncState.SyncState({
205
165
  pending: [e_0_0],
206
- rollbackTail: [],
207
166
  upstreamHead: EventId.ROOT,
208
167
  localHead: e_0_0.id,
209
168
  });
210
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
169
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
211
170
  expectAdvance(result);
212
171
  expectEventArraysEqual(result.newSyncState.pending, []);
213
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
214
172
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
215
173
  expect(result.newSyncState.localHead).toMatchObject(e_0_0.id);
216
- expect(result.newEvents).toStrictEqual([]);
174
+ expectEventArraysEqual(result.newEvents, []);
175
+ expectEventArraysEqual(result.confirmedEvents, [e_0_0]);
217
176
  });
218
- it('should acknowledge partial pending event when receiving matching event', () => {
177
+ it('should confirm partial pending event when receiving matching event', () => {
219
178
  const syncState = new SyncState.SyncState({
220
179
  pending: [e_0_0, e_1_0],
221
- rollbackTail: [],
222
180
  upstreamHead: EventId.ROOT,
223
181
  localHead: e_1_0.id,
224
182
  });
225
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
183
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
226
184
  expectAdvance(result);
227
185
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0]);
228
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
229
186
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
230
187
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
231
- expect(result.newEvents).toStrictEqual([]);
188
+ expectEventArraysEqual(result.newEvents, []);
189
+ expectEventArraysEqual(result.confirmedEvents, [e_0_0]);
232
190
  });
233
- it('should acknowledge pending event and add new event', () => {
191
+ it('should confirm pending event and add new event', () => {
234
192
  const syncState = new SyncState.SyncState({
235
193
  pending: [e_0_0],
236
- rollbackTail: [],
237
194
  upstreamHead: EventId.ROOT,
238
195
  localHead: e_0_0.id,
239
196
  });
240
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_0_1] } });
197
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_0_1] } });
241
198
  expectAdvance(result);
242
199
  expectEventArraysEqual(result.newSyncState.pending, []);
243
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1]);
244
200
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1.id);
245
201
  expect(result.newSyncState.localHead).toMatchObject(e_0_1.id);
246
202
  expect(result.newEvents).toStrictEqual([e_0_1]);
203
+ expectEventArraysEqual(result.confirmedEvents, [e_0_0]);
247
204
  });
248
- it('should acknowledge pending event and add multiple new events', () => {
205
+ it('should confirm pending event and add multiple new events', () => {
249
206
  const syncState = new SyncState.SyncState({
250
207
  pending: [e_0_1],
251
- rollbackTail: [],
252
208
  upstreamHead: e_0_0.id,
253
209
  localHead: e_0_1.id,
254
210
  });
255
- const result = update({
211
+ const result = merge({
256
212
  syncState,
257
213
  payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0, e_1_1] },
258
214
  });
259
215
  expectAdvance(result);
260
216
  expectEventArraysEqual(result.newSyncState.pending, []);
261
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0, e_1_1]);
262
217
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_1.id);
263
218
  expect(result.newSyncState.localHead).toMatchObject(e_1_1.id);
264
219
  expect(result.newEvents).toStrictEqual([e_0_2, e_0_3, e_1_0, e_1_1]);
220
+ expectEventArraysEqual(result.confirmedEvents, [e_0_1]);
265
221
  });
266
222
  it('should ignore client events (incoming is subset of pending)', () => {
267
223
  const syncState = new SyncState.SyncState({
268
224
  pending: [e_r_1, e_0_0],
269
- rollbackTail: [],
270
225
  upstreamHead: EventId.ROOT,
271
226
  localHead: e_0_0.id,
272
227
  });
273
- const result = update({
228
+ const result = merge({
274
229
  syncState,
275
230
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0] },
276
231
  ignoreClientEvents: true,
277
232
  });
278
233
  expectAdvance(result);
279
234
  expectEventArraysEqual(result.newSyncState.pending, []);
280
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0]);
281
235
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
282
236
  expect(result.newSyncState.localHead).toMatchObject(e_0_0.id);
283
- expect(result.newEvents).toStrictEqual([]);
237
+ expectEventArraysEqual(result.newEvents, []);
238
+ expectEventArraysEqual(result.confirmedEvents, [e_r_1, e_0_0]);
284
239
  });
285
240
  it('should ignore client events (incoming is subset of pending case 2)', () => {
286
241
  const syncState = new SyncState.SyncState({
287
242
  pending: [e_r_1, e_0_0, e_1_0],
288
- rollbackTail: [],
289
243
  upstreamHead: EventId.ROOT,
290
244
  localHead: e_0_0.id,
291
245
  });
292
- const result = update({
246
+ const result = merge({
293
247
  syncState,
294
248
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0] },
295
249
  ignoreClientEvents: true,
296
250
  });
297
251
  expectAdvance(result);
298
252
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0]);
299
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0]);
300
253
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
301
254
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
302
- expect(result.newEvents).toStrictEqual([]);
255
+ expectEventArraysEqual(result.newEvents, []);
256
+ expectEventArraysEqual(result.confirmedEvents, [e_r_1, e_0_0]);
303
257
  });
304
258
  it('should ignore client events (incoming goes beyond pending)', () => {
305
259
  const syncState = new SyncState.SyncState({
306
260
  pending: [e_r_1, e_0_0, e_0_1],
307
- rollbackTail: [],
308
261
  upstreamHead: EventId.ROOT,
309
262
  localHead: e_0_1.id,
310
263
  });
311
- const result = update({
264
+ const result = merge({
312
265
  syncState,
313
266
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_1_0] },
314
267
  ignoreClientEvents: true,
315
268
  });
316
269
  expectAdvance(result);
317
270
  expectEventArraysEqual(result.newSyncState.pending, []);
318
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0, e_0_1, e_1_0]);
319
271
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
320
272
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
321
273
  expect(result.newEvents).toStrictEqual([e_1_0]);
274
+ expectEventArraysEqual(result.confirmedEvents, [e_r_1, e_0_0, e_0_1]);
322
275
  });
323
276
  it('should fail if incoming event is ≤ local head', () => {
324
277
  const syncState = new SyncState.SyncState({
325
278
  pending: [],
326
- rollbackTail: [],
327
279
  upstreamHead: e_1_0.id,
328
280
  localHead: e_1_0.id,
329
281
  });
330
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
282
+ const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
331
283
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
332
284
  });
333
285
  });
@@ -335,90 +287,64 @@ describe('syncstate', () => {
335
287
  it('should rebase single client event to end', () => {
336
288
  const syncState = new SyncState.SyncState({
337
289
  pending: [e_0_0],
338
- rollbackTail: [],
339
290
  upstreamHead: EventId.ROOT,
340
291
  localHead: e_0_0.id,
341
292
  });
342
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1] } });
293
+ const result = merge({ syncState, payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e_0_1] }) });
343
294
  const e_0_0_e_0_2 = e_0_0.rebase_(e_0_1.id);
344
295
  expectRebase(result);
345
296
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_0_2]);
346
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1]);
347
297
  expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1.id);
348
298
  expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_0_2.id);
349
- expectEventArraysEqual(result.eventsToRollback, [e_0_0]);
299
+ expectEventArraysEqual(result.rollbackEvents, [e_0_0]);
350
300
  expectEventArraysEqual(result.newEvents, [e_0_1, e_0_0_e_0_2]);
351
301
  });
352
- it('should rebase different event with same id (no rollback tail)', () => {
353
- const e_0_0_b = new TestEvent({ global: 0, client: 0 }, EventId.ROOT, '0_0_b', true);
354
- const syncState = new SyncState.SyncState({
355
- pending: [e_0_0_b],
356
- rollbackTail: [],
357
- upstreamHead: EventId.ROOT,
358
- localHead: e_0_0_b.id,
359
- });
360
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
361
- const e_0_0_e_1_0 = e_0_0_b.rebase_(e_0_0.id);
362
- expectRebase(result);
363
- expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_1_0]);
364
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
365
- expectEventArraysEqual(result.newEvents, [e_0_0, e_0_0_e_1_0]);
366
- expectEventArraysEqual(result.eventsToRollback, [e_0_0_b]);
367
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
368
- expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_1_0.id);
369
- });
370
302
  it('should rebase different event with same id', () => {
371
303
  const e_1_0_b = new TestEvent({ global: 1, client: 0 }, e_0_0.id, '1_0_b', false);
372
304
  const syncState = new SyncState.SyncState({
373
305
  pending: [e_1_0_b],
374
- rollbackTail: [e_0_0, e_0_1],
375
306
  upstreamHead: EventId.ROOT,
376
307
  localHead: e_1_0_b.id,
377
308
  });
378
- const result = update({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0] } });
309
+ const result = merge({ syncState, payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e_1_0] }) });
379
310
  const e_1_0_e_2_0 = e_1_0_b.rebase_(e_1_0.id);
380
311
  expectRebase(result);
381
312
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0_e_2_0]);
382
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1, e_1_0]);
383
313
  expectEventArraysEqual(result.newEvents, [e_1_0, e_1_0_e_2_0]);
384
- expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1, e_1_0_b]);
314
+ expectEventArraysEqual(result.rollbackEvents, [e_1_0_b]);
385
315
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
386
316
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
387
317
  });
388
318
  it('should rebase single client event to end (more incoming events)', () => {
389
319
  const syncState = new SyncState.SyncState({
390
320
  pending: [e_0_0],
391
- rollbackTail: [],
392
321
  upstreamHead: EventId.ROOT,
393
322
  localHead: e_0_0.id,
394
323
  });
395
- const result = update({
324
+ const result = merge({
396
325
  syncState,
397
- payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] },
326
+ payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] }),
398
327
  });
399
328
  const e_0_0_e_2_0 = e_0_0.rebase_(e_1_0.id);
400
329
  expectRebase(result);
401
330
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_2_0]);
402
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0]);
403
331
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
404
332
  expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_2_0.id);
405
333
  });
406
334
  it('should only rebase divergent events when first event matches', () => {
407
335
  const syncState = new SyncState.SyncState({
408
336
  pending: [e_0_0, e_0_1],
409
- rollbackTail: [],
410
337
  upstreamHead: EventId.ROOT,
411
338
  localHead: e_0_0.id,
412
339
  });
413
- const result = update({
340
+ const result = merge({
414
341
  syncState,
415
- payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_0_2, e_0_3, e_1_0] },
342
+ payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e_0_0, e_0_2, e_0_3, e_1_0] }),
416
343
  });
417
344
  const e_0_1_e_1_1 = e_0_1.rebase_(e_1_0.id);
418
345
  expectRebase(result);
419
346
  expectEventArraysEqual(result.newSyncState.pending, [e_0_1_e_1_1]);
420
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_2, e_0_3, e_1_0]);
421
- expectEventArraysEqual(result.eventsToRollback, [e_0_1]);
347
+ expectEventArraysEqual(result.rollbackEvents, [e_0_1]);
422
348
  expectEventArraysEqual(result.newEvents, [e_0_2, e_0_3, e_1_0, e_0_1_e_1_1]);
423
349
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
424
350
  expect(result.newSyncState.localHead).toMatchObject(e_0_1_e_1_1.id);
@@ -426,21 +352,19 @@ describe('syncstate', () => {
426
352
  it('should rebase all client events when incoming chain starts differently', () => {
427
353
  const syncState = new SyncState.SyncState({
428
354
  pending: [e_0_0, e_0_1],
429
- rollbackTail: [],
430
355
  upstreamHead: EventId.ROOT,
431
356
  localHead: e_0_1.id,
432
357
  });
433
- const result = update({
358
+ const result = merge({
434
359
  syncState,
435
- payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] },
360
+ payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] }),
436
361
  });
437
362
  const e_0_0_e_1_1 = e_0_0.rebase_(e_1_0.id);
438
363
  const e_0_1_e_1_2 = e_0_1.rebase_(e_0_0_e_1_1.id);
439
364
  expectRebase(result);
440
365
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_1_1, e_0_1_e_1_2]);
441
- expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0]);
442
366
  expectEventArraysEqual(result.newEvents, [e_0_1, e_0_2, e_0_3, e_1_0, e_0_0_e_1_1, e_0_1_e_1_2]);
443
- expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1]);
367
+ expectEventArraysEqual(result.rollbackEvents, [e_0_0, e_0_1]);
444
368
  expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
445
369
  expect(result.newSyncState.localHead).toMatchObject(e_0_1_e_1_2.id);
446
370
  });
@@ -449,28 +373,32 @@ describe('syncstate', () => {
449
373
  it('should advance with new events', () => {
450
374
  const syncState = new SyncState.SyncState({
451
375
  pending: [e_0_0],
452
- rollbackTail: [],
453
376
  upstreamHead: EventId.ROOT,
454
377
  localHead: e_0_0.id,
455
378
  });
456
- const result = update({ syncState, payload: { _tag: 'local-push', newEvents: [e_0_1, e_0_2, e_0_3] } });
379
+ const result = merge({
380
+ syncState,
381
+ payload: SyncState.PayloadLocalPush.make({ newEvents: [e_0_1, e_0_2, e_0_3] }),
382
+ });
457
383
  expectAdvance(result);
458
384
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0, e_0_1, e_0_2, e_0_3]);
459
- expectEventArraysEqual(result.newSyncState.rollbackTail, []);
460
385
  expect(result.newSyncState.upstreamHead).toMatchObject(EventId.ROOT);
461
386
  expect(result.newSyncState.localHead).toMatchObject(e_0_3.id);
462
387
  expectEventArraysEqual(result.newEvents, [e_0_1, e_0_2, e_0_3]);
388
+ expectEventArraysEqual(result.confirmedEvents, []);
463
389
  });
464
390
  });
465
391
  describe('reject', () => {
466
392
  it('should reject when new events are greater than pending events', () => {
467
393
  const syncState = new SyncState.SyncState({
468
394
  pending: [e_0_0, e_0_1],
469
- rollbackTail: [],
470
395
  upstreamHead: EventId.ROOT,
471
396
  localHead: e_0_1.id,
472
397
  });
473
- const result = update({ syncState, payload: { _tag: 'local-push', newEvents: [e_0_1, e_0_2] } });
398
+ const result = merge({
399
+ syncState,
400
+ payload: SyncState.PayloadLocalPush.make({ newEvents: [e_0_1, e_0_2] }),
401
+ });
474
402
  expectReject(result);
475
403
  expect(result.expectedMinimumId).toMatchObject(e_0_2.id);
476
404
  });
@@ -492,7 +420,7 @@ function expectAdvance(result) {
492
420
  expect(result._tag).toBe('advance');
493
421
  }
494
422
  function expectRebase(result) {
495
- expect(result._tag).toBe('rebase');
423
+ expect(result._tag, `Expected rebase, got ${result}`).toBe('rebase');
496
424
  }
497
425
  function expectReject(result) {
498
426
  expect(result._tag).toBe('reject');
@@ -1 +1 @@
1
- {"version":3,"file":"syncstate.test.js","sourceRoot":"","sources":["../../src/sync/syncstate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncstate.test.js","sourceRoot":"","sources":["../../src/sync/syncstate.test.ts"],"names":[],"mappings":"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"}