@livestore/common 0.3.0-dev.11 → 0.3.0-dev.3

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 (181) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-types.d.ts +35 -47
  3. package/dist/adapter-types.d.ts.map +1 -1
  4. package/dist/adapter-types.js.map +1 -1
  5. package/dist/derived-mutations.d.ts +4 -4
  6. package/dist/derived-mutations.d.ts.map +1 -1
  7. package/dist/derived-mutations.test.js.map +1 -1
  8. package/dist/devtools/devtools-bridge.d.ts +1 -2
  9. package/dist/devtools/devtools-bridge.d.ts.map +1 -1
  10. package/dist/devtools/devtools-messages.d.ts +592 -3
  11. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  12. package/dist/devtools/devtools-messages.js +171 -3
  13. package/dist/devtools/devtools-messages.js.map +1 -1
  14. package/dist/index.d.ts +4 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/init-singleton-tables.d.ts +2 -2
  17. package/dist/init-singleton-tables.d.ts.map +1 -1
  18. package/dist/init-singleton-tables.js.map +1 -1
  19. package/dist/leader-thread/apply-mutation.d.ts +2 -5
  20. package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
  21. package/dist/leader-thread/apply-mutation.js +29 -41
  22. package/dist/leader-thread/apply-mutation.js.map +1 -1
  23. package/dist/leader-thread/connection.d.ts +4 -4
  24. package/dist/leader-thread/connection.d.ts.map +1 -1
  25. package/dist/leader-thread/connection.js +5 -5
  26. package/dist/leader-thread/connection.js.map +1 -1
  27. package/dist/leader-thread/leader-sync-processor.d.ts +2 -2
  28. package/dist/leader-thread/leader-sync-processor.d.ts.map +1 -1
  29. package/dist/leader-thread/leader-sync-processor.js +12 -20
  30. package/dist/leader-thread/leader-sync-processor.js.map +1 -1
  31. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  32. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  33. package/dist/leader-thread/leader-worker-devtools.js +81 -37
  34. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  35. package/dist/leader-thread/make-leader-thread-layer.d.ts +11 -12
  36. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  37. package/dist/leader-thread/make-leader-thread-layer.js +14 -33
  38. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  39. package/dist/leader-thread/mutationlog.d.ts +19 -6
  40. package/dist/leader-thread/mutationlog.d.ts.map +1 -1
  41. package/dist/leader-thread/mutationlog.js +6 -7
  42. package/dist/leader-thread/mutationlog.js.map +1 -1
  43. package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
  44. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  45. package/dist/leader-thread/recreate-db.js +18 -24
  46. package/dist/leader-thread/recreate-db.js.map +1 -1
  47. package/dist/leader-thread/types.d.ts +16 -36
  48. package/dist/leader-thread/types.d.ts.map +1 -1
  49. package/dist/leader-thread/types.js.map +1 -1
  50. package/dist/mutation.d.ts +2 -9
  51. package/dist/mutation.d.ts.map +1 -1
  52. package/dist/mutation.js +5 -5
  53. package/dist/mutation.js.map +1 -1
  54. package/dist/query-builder/impl.d.ts +1 -1
  55. package/dist/rehydrate-from-mutationlog.d.ts +5 -5
  56. package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
  57. package/dist/rehydrate-from-mutationlog.js +19 -13
  58. package/dist/rehydrate-from-mutationlog.js.map +1 -1
  59. package/dist/schema/EventId.d.ts +14 -16
  60. package/dist/schema/EventId.d.ts.map +1 -1
  61. package/dist/schema/EventId.js +7 -15
  62. package/dist/schema/EventId.js.map +1 -1
  63. package/dist/schema/MutationEvent.d.ts +80 -49
  64. package/dist/schema/MutationEvent.d.ts.map +1 -1
  65. package/dist/schema/MutationEvent.js +15 -32
  66. package/dist/schema/MutationEvent.js.map +1 -1
  67. package/dist/schema/system-tables.d.ts +26 -26
  68. package/dist/schema/system-tables.d.ts.map +1 -1
  69. package/dist/schema/system-tables.js +11 -19
  70. package/dist/schema/system-tables.js.map +1 -1
  71. package/dist/schema-management/common.d.ts +3 -3
  72. package/dist/schema-management/common.d.ts.map +1 -1
  73. package/dist/schema-management/common.js.map +1 -1
  74. package/dist/schema-management/migrations.d.ts +4 -4
  75. package/dist/schema-management/migrations.d.ts.map +1 -1
  76. package/dist/schema-management/migrations.js +6 -6
  77. package/dist/schema-management/migrations.js.map +1 -1
  78. package/dist/sync/client-session-sync-processor.d.ts +4 -4
  79. package/dist/sync/client-session-sync-processor.d.ts.map +1 -1
  80. package/dist/sync/index.d.ts +1 -1
  81. package/dist/sync/index.d.ts.map +1 -1
  82. package/dist/sync/index.js +1 -1
  83. package/dist/sync/index.js.map +1 -1
  84. package/dist/sync/next/history-dag-common.d.ts +4 -1
  85. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  86. package/dist/sync/next/history-dag-common.js +1 -1
  87. package/dist/sync/next/history-dag-common.js.map +1 -1
  88. package/dist/sync/next/rebase-events.d.ts +3 -3
  89. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  90. package/dist/sync/next/rebase-events.js +2 -3
  91. package/dist/sync/next/rebase-events.js.map +1 -1
  92. package/dist/sync/next/test/mutation-fixtures.d.ts +7 -7
  93. package/dist/sync/next/test/mutation-fixtures.d.ts.map +1 -1
  94. package/dist/sync/next/test/mutation-fixtures.js +9 -3
  95. package/dist/sync/next/test/mutation-fixtures.js.map +1 -1
  96. package/dist/sync/sync.d.ts +11 -21
  97. package/dist/sync/sync.d.ts.map +1 -1
  98. package/dist/sync/sync.js.map +1 -1
  99. package/dist/sync/syncstate.d.ts +23 -45
  100. package/dist/sync/syncstate.d.ts.map +1 -1
  101. package/dist/sync/syncstate.js +12 -56
  102. package/dist/sync/syncstate.js.map +1 -1
  103. package/dist/sync/syncstate.test.js +69 -125
  104. package/dist/sync/syncstate.test.js.map +1 -1
  105. package/dist/sync/validate-push-payload.d.ts +2 -2
  106. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  107. package/dist/sync/validate-push-payload.js +2 -2
  108. package/dist/sync/validate-push-payload.js.map +1 -1
  109. package/dist/version.d.ts +1 -1
  110. package/dist/version.d.ts.map +1 -1
  111. package/dist/version.js +1 -1
  112. package/dist/version.js.map +1 -1
  113. package/package.json +5 -6
  114. package/src/adapter-types.ts +40 -39
  115. package/src/derived-mutations.test.ts +1 -1
  116. package/src/derived-mutations.ts +5 -9
  117. package/src/devtools/devtools-bridge.ts +1 -2
  118. package/src/devtools/devtools-messages.ts +243 -3
  119. package/src/index.ts +6 -0
  120. package/src/init-singleton-tables.ts +2 -2
  121. package/src/leader-thread/apply-mutation.ts +35 -53
  122. package/src/leader-thread/connection.ts +7 -7
  123. package/src/leader-thread/{LeaderSyncProcessor.ts → leader-sync-processor.ts} +268 -306
  124. package/src/leader-thread/leader-worker-devtools.ts +124 -52
  125. package/src/leader-thread/make-leader-thread-layer.ts +30 -62
  126. package/src/leader-thread/mutationlog.ts +10 -14
  127. package/src/leader-thread/recreate-db.ts +20 -24
  128. package/src/leader-thread/types.ts +20 -41
  129. package/src/mutation.ts +7 -17
  130. package/src/rehydrate-from-mutationlog.ts +26 -18
  131. package/src/schema/EventId.ts +9 -23
  132. package/src/schema/MutationEvent.ts +24 -46
  133. package/src/schema/system-tables.ts +11 -19
  134. package/src/schema-management/common.ts +3 -3
  135. package/src/schema-management/migrations.ts +10 -10
  136. package/src/sync/{ClientSessionSyncProcessor.ts → client-session-sync-processor.ts} +19 -26
  137. package/src/sync/index.ts +1 -1
  138. package/src/sync/next/history-dag-common.ts +1 -1
  139. package/src/sync/next/rebase-events.ts +7 -7
  140. package/src/sync/next/test/mutation-fixtures.ts +10 -3
  141. package/src/sync/sync.ts +6 -19
  142. package/src/sync/syncstate.test.ts +67 -127
  143. package/src/sync/syncstate.ts +19 -21
  144. package/src/sync/validate-push-payload.ts +4 -7
  145. package/src/version.ts +1 -1
  146. package/dist/devtools/devtool-message-leader.d.ts +0 -2
  147. package/dist/devtools/devtool-message-leader.d.ts.map +0 -1
  148. package/dist/devtools/devtool-message-leader.js +0 -2
  149. package/dist/devtools/devtool-message-leader.js.map +0 -1
  150. package/dist/devtools/devtools-messages-client-session.d.ts +0 -297
  151. package/dist/devtools/devtools-messages-client-session.d.ts.map +0 -1
  152. package/dist/devtools/devtools-messages-client-session.js +0 -61
  153. package/dist/devtools/devtools-messages-client-session.js.map +0 -1
  154. package/dist/devtools/devtools-messages-common.d.ts +0 -65
  155. package/dist/devtools/devtools-messages-common.d.ts.map +0 -1
  156. package/dist/devtools/devtools-messages-common.js +0 -35
  157. package/dist/devtools/devtools-messages-common.js.map +0 -1
  158. package/dist/devtools/devtools-messages-leader.d.ts +0 -261
  159. package/dist/devtools/devtools-messages-leader.d.ts.map +0 -1
  160. package/dist/devtools/devtools-messages-leader.js +0 -85
  161. package/dist/devtools/devtools-messages-leader.js.map +0 -1
  162. package/dist/leader-thread/LeaderSyncProcessor.d.ts +0 -37
  163. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +0 -1
  164. package/dist/leader-thread/LeaderSyncProcessor.js +0 -432
  165. package/dist/leader-thread/LeaderSyncProcessor.js.map +0 -1
  166. package/dist/schema/EventId.test.d.ts +0 -2
  167. package/dist/schema/EventId.test.d.ts.map +0 -1
  168. package/dist/schema/EventId.test.js +0 -11
  169. package/dist/schema/EventId.test.js.map +0 -1
  170. package/dist/schema/MutationEvent.test.d.ts +0 -2
  171. package/dist/schema/MutationEvent.test.d.ts.map +0 -1
  172. package/dist/schema/MutationEvent.test.js +0 -2
  173. package/dist/schema/MutationEvent.test.js.map +0 -1
  174. package/dist/sync/ClientSessionSyncProcessor.d.ts +0 -43
  175. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +0 -1
  176. package/dist/sync/ClientSessionSyncProcessor.js +0 -141
  177. package/dist/sync/ClientSessionSyncProcessor.js.map +0 -1
  178. package/src/devtools/devtools-messages-client-session.ts +0 -109
  179. package/src/devtools/devtools-messages-common.ts +0 -52
  180. package/src/devtools/devtools-messages-leader.ts +0 -115
  181. package/src/schema/EventId.test.ts +0 -12
@@ -2,56 +2,12 @@ import { shouldNeverHappen } from '@livestore/utils';
2
2
  import { ReadonlyArray, Schema } from '@livestore/utils/effect';
3
3
  import * as EventId from '../schema/EventId.js';
4
4
  import * as MutationEvent from '../schema/MutationEvent.js';
5
- /**
6
- * SyncState represents the current sync state of a sync node relative to an upstream node.
7
- * Events flow from local to upstream, with each state maintaining its own event head.
8
- *
9
- * Event Chain Structure:
10
- * ```
11
- * +-------------------------+------------------------+
12
- * | ROLLBACK TAIL | PENDING EVENTS |
13
- * +-------------------------+------------------------+
14
- * ▼ ▼
15
- * Upstream Head Local Head
16
- * Example: (0,0), (0,1), (1,0) (1,1), (1,2), (2,0)
17
- * ```
18
- *
19
- * State:
20
- * - **Pending Events**: Events awaiting acknowledgment from the upstream.
21
- * - Can be confirmed or rejected by the upstream.
22
- * - Subject to rebase if rejected.
23
- * - **Rollback Tail**: Events that are kept around temporarily for potential rollback until confirmed by upstream.
24
- *
25
- * Payloads:
26
- * - `PayloadUpstreamRebase`: Upstream has performed a rebase, so downstream must roll back to the specified event
27
- * and rebase the pending events on top of the new events.
28
- * - `PayloadUpstreamAdvance`: Upstream has advanced, so downstream must rebase the pending events on top of the new events.
29
- * - `PayloadUpstreamTrimRollbackTail`: Upstream has advanced, so downstream can trim the rollback tail.
30
- * - `PayloadLocalPush`: Local push payload
31
- *
32
- * Invariants:
33
- * 1. **Chain Continuity**: Each event must reference its immediate parent.
34
- * 2. **Head Ordering**: Upstream Head ≤ Local Head.
35
- * 3. **ID Sequence**: Must follow the pattern (1,0)→(1,1)→(1,2)→(2,0).
36
- *
37
- * The `updateSyncState` function processes updates to the sync state based on incoming payloads,
38
- * handling cases such as upstream rebase, advance, local push, and rollback tail trimming.
39
- */
40
- export class SyncState extends Schema.Class('SyncState')({
5
+ export const SyncState = Schema.Struct({
41
6
  pending: Schema.Array(MutationEvent.EncodedWithMeta),
42
7
  rollbackTail: Schema.Array(MutationEvent.EncodedWithMeta),
43
8
  upstreamHead: EventId.EventId,
44
9
  localHead: EventId.EventId,
45
- }) {
46
- toJSON = () => {
47
- return {
48
- pending: this.pending.map((e) => e.toJSON()),
49
- rollbackTail: this.rollbackTail.map((e) => e.toJSON()),
50
- upstreamHead: `(${this.upstreamHead.global},${this.upstreamHead.local})`,
51
- localHead: `(${this.localHead.global},${this.localHead.local})`,
52
- };
53
- };
54
- }
10
+ }).annotations({ title: 'SyncState' });
55
11
  export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
56
12
  /** Rollback until this event in the rollback tail (inclusive). Starting from the end of the rollback tail. */
57
13
  rollbackUntil: EventId.EventId,
@@ -101,12 +57,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
101
57
  });
102
58
  return {
103
59
  _tag: 'rebase',
104
- newSyncState: new SyncState({
60
+ newSyncState: {
105
61
  pending: rebasedPending,
106
62
  rollbackTail: trimRollbackTail([...syncState.rollbackTail.slice(0, rollbackIndex), ...payload.newEvents]),
107
63
  upstreamHead: newUpstreamHead,
108
64
  localHead: rebasedPending.at(-1)?.id ?? newUpstreamHead,
109
- }),
65
+ },
110
66
  previousSyncState: syncState,
111
67
  newEvents: payload.newEvents,
112
68
  eventsToRollback,
@@ -116,12 +72,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
116
72
  if (payload.newEvents.length === 0) {
117
73
  return {
118
74
  _tag: 'advance',
119
- newSyncState: new SyncState({
75
+ newSyncState: {
120
76
  pending: syncState.pending,
121
77
  rollbackTail: trimRollbackTail(syncState.rollbackTail),
122
78
  upstreamHead: syncState.upstreamHead,
123
79
  localHead: syncState.localHead,
124
- }),
80
+ },
125
81
  previousSyncState: syncState,
126
82
  newEvents: [],
127
83
  };
@@ -171,12 +127,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
171
127
  });
172
128
  return {
173
129
  _tag: 'advance',
174
- newSyncState: new SyncState({
130
+ newSyncState: {
175
131
  pending: pendingRemaining,
176
132
  rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...pendingAndNewEvents]),
177
133
  upstreamHead: newUpstreamHead,
178
134
  localHead: pendingRemaining.at(-1)?.id ?? newUpstreamHead,
179
- }),
135
+ },
180
136
  previousSyncState: syncState,
181
137
  newEvents,
182
138
  };
@@ -197,12 +153,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
197
153
  });
198
154
  return {
199
155
  _tag: 'rebase',
200
- newSyncState: new SyncState({
156
+ newSyncState: {
201
157
  pending: rebasedPending,
202
158
  rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...payload.newEvents]),
203
159
  upstreamHead: newUpstreamHead,
204
160
  localHead: rebasedPending.at(-1).id,
205
- }),
161
+ },
206
162
  previousSyncState: syncState,
207
163
  newEvents: [...payload.newEvents.slice(divergentNewEventsIndex), ...rebasedPending],
208
164
  eventsToRollback: [...syncState.rollbackTail, ...divergentPending],
@@ -222,12 +178,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
222
178
  else {
223
179
  return {
224
180
  _tag: 'advance',
225
- newSyncState: new SyncState({
181
+ newSyncState: {
226
182
  pending: [...syncState.pending, ...payload.newEvents],
227
183
  rollbackTail: syncState.rollbackTail,
228
184
  upstreamHead: syncState.upstreamHead,
229
185
  localHead: payload.newEvents.at(-1).id,
230
- }),
186
+ },
231
187
  previousSyncState: syncState,
232
188
  newEvents: payload.newEvents,
233
189
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,20 @@ import * as EventId from '../schema/EventId.js';
4
4
  import * as MutationEvent from '../schema/MutationEvent.js';
5
5
  import * as SyncState from './syncstate.js';
6
6
  class TestEvent extends MutationEvent.EncodedWithMeta {
7
+ id;
8
+ parentId;
7
9
  payload;
8
10
  isLocal;
9
11
  constructor(id, parentId, payload, isLocal) {
10
12
  super({
11
- id: EventId.make(id),
12
- parentId: EventId.make(parentId),
13
+ id,
14
+ parentId,
13
15
  mutation: 'a',
14
16
  args: payload,
15
17
  meta: {},
16
18
  });
19
+ this.id = id;
20
+ this.parentId = parentId;
17
21
  this.payload = payload;
18
22
  this.isLocal = isLocal;
19
23
  }
@@ -35,12 +39,12 @@ describe('syncstate', () => {
35
39
  const run = ({ syncState, payload, ignoreLocalEvents = false, }) => SyncState.updateSyncState({ syncState, payload, isLocalEvent, isEqualEvent, ignoreLocalEvents });
36
40
  describe.each([{ trimRollbackUntil: false }, { trimRollbackUntil: true }])('upstream-rebase (trimRollbackUntil: $trimRollbackUntil)', ({ trimRollbackUntil }) => {
37
41
  it('should rollback until start', () => {
38
- const syncState = new SyncState.SyncState({
42
+ const syncState = {
39
43
  pending: [e_1_0],
40
44
  rollbackTail: [e_0_0, e_0_1],
41
45
  upstreamHead: EventId.ROOT,
42
46
  localHead: e_1_0.id,
43
- });
47
+ };
44
48
  const e_0_0_e_1_0 = e_0_0.rebase_(e_1_0.id);
45
49
  const e_0_1_e_1_1 = e_0_1.rebase_(e_0_0_e_1_0.id);
46
50
  const result = run({
@@ -61,18 +65,18 @@ describe('syncstate', () => {
61
65
  else {
62
66
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0_e_1_0, e_0_1_e_1_1]);
63
67
  }
64
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_1.id);
68
+ expect(result.newSyncState.upstreamHead).toBe(e_0_1_e_1_1.id);
65
69
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
66
70
  expectEventArraysEqual(result.newEvents, [e_0_0_e_1_0, e_0_1_e_1_1]);
67
71
  expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1, e_1_0]);
68
72
  });
69
73
  it('should rollback only to specified point', () => {
70
- const syncState = new SyncState.SyncState({
74
+ const syncState = {
71
75
  pending: [e_1_0],
72
76
  rollbackTail: [e_0_0, e_0_1],
73
77
  upstreamHead: EventId.ROOT,
74
78
  localHead: e_1_0.id,
75
- });
79
+ };
76
80
  const e_0_1_e_1_0 = e_0_1.rebase_(e_0_0.id);
77
81
  const result = run({
78
82
  syncState,
@@ -92,18 +96,13 @@ describe('syncstate', () => {
92
96
  else {
93
97
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1_e_1_0]);
94
98
  }
95
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_0.id);
99
+ expect(result.newSyncState.upstreamHead).toBe(e_0_1_e_1_0.id);
96
100
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
97
101
  expectEventArraysEqual(result.newEvents, [e_0_1_e_1_0]);
98
102
  expectEventArraysEqual(result.eventsToRollback, [e_0_1, e_1_0]);
99
103
  });
100
104
  it('should work for empty pending', () => {
101
- const syncState = new SyncState.SyncState({
102
- pending: [],
103
- rollbackTail: [e_0_0],
104
- upstreamHead: EventId.ROOT,
105
- localHead: e_0_0.id,
106
- });
105
+ const syncState = { pending: [], rollbackTail: [e_0_0], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
107
106
  const result = run({
108
107
  syncState,
109
108
  payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [e_1_0] },
@@ -111,29 +110,19 @@ describe('syncstate', () => {
111
110
  expectRebase(result);
112
111
  expectEventArraysEqual(result.newSyncState.pending, []);
113
112
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_1_0]);
114
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
113
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
115
114
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
116
- expect(result.newEvents).toStrictEqual([e_1_0]);
115
+ expect(result.newEvents).toEqual([e_1_0]);
117
116
  });
118
117
  it('should fail for empty rollback tail', () => {
119
- const syncState = new SyncState.SyncState({
120
- pending: [],
121
- rollbackTail: [],
122
- upstreamHead: EventId.ROOT,
123
- localHead: e_0_0.id,
124
- });
118
+ const syncState = { pending: [], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
125
119
  expect(() => run({
126
120
  syncState,
127
121
  payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [e_1_0] },
128
122
  })).toThrow();
129
123
  });
130
124
  it('should work for empty incoming', () => {
131
- const syncState = new SyncState.SyncState({
132
- pending: [],
133
- rollbackTail: [e_0_0],
134
- upstreamHead: EventId.ROOT,
135
- localHead: e_0_0.id,
136
- });
125
+ const syncState = { pending: [], rollbackTail: [e_0_0], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
137
126
  const result = run({
138
127
  syncState,
139
128
  payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [] },
@@ -141,82 +130,57 @@ describe('syncstate', () => {
141
130
  expectRebase(result);
142
131
  expectEventArraysEqual(result.newSyncState.pending, []);
143
132
  expectEventArraysEqual(result.newSyncState.rollbackTail, []);
144
- expect(result.newSyncState.upstreamHead).toMatchObject(EventId.ROOT);
133
+ expect(result.newSyncState.upstreamHead).toBe(EventId.ROOT);
145
134
  expect(result.newSyncState.localHead).toMatchObject(EventId.ROOT);
146
- expect(result.newEvents).toStrictEqual([]);
135
+ expect(result.newEvents).toEqual([]);
147
136
  });
148
137
  });
149
138
  describe('upstream-advance: advance', () => {
150
139
  it('should throw error if newEvents are not sorted in ascending order by eventId (local)', () => {
151
- const syncState = new SyncState.SyncState({
152
- pending: [e_0_0],
153
- rollbackTail: [],
154
- upstreamHead: EventId.ROOT,
155
- localHead: e_0_0.id,
156
- });
140
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
157
141
  expect(() => run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_0] } })).toThrow();
158
142
  });
159
143
  it('should throw error if newEvents are not sorted in ascending order by eventId (global)', () => {
160
- const syncState = new SyncState.SyncState({
161
- pending: [e_0_0],
162
- rollbackTail: [],
163
- upstreamHead: EventId.ROOT,
164
- localHead: e_0_0.id,
165
- });
144
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
166
145
  expect(() => run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0, e_0_0] } })).toThrow();
167
146
  });
168
147
  it('should acknowledge pending event when receiving matching event', () => {
169
- const syncState = new SyncState.SyncState({
170
- pending: [e_0_0],
171
- rollbackTail: [],
172
- upstreamHead: EventId.ROOT,
173
- localHead: e_0_0.id,
174
- });
148
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
175
149
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
176
150
  expectAdvance(result);
177
151
  expectEventArraysEqual(result.newSyncState.pending, []);
178
152
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
179
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
153
+ expect(result.newSyncState.upstreamHead).toBe(e_0_0.id);
180
154
  expect(result.newSyncState.localHead).toMatchObject(e_0_0.id);
181
- expect(result.newEvents).toStrictEqual([]);
155
+ expect(result.newEvents).toEqual([]);
182
156
  });
183
157
  it('should acknowledge partial pending event when receiving matching event', () => {
184
- const syncState = new SyncState.SyncState({
158
+ const syncState = {
185
159
  pending: [e_0_0, e_1_0],
186
160
  rollbackTail: [],
187
161
  upstreamHead: EventId.ROOT,
188
162
  localHead: e_1_0.id,
189
- });
163
+ };
190
164
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
191
165
  expectAdvance(result);
192
166
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0]);
193
167
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
194
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
168
+ expect(result.newSyncState.upstreamHead).toBe(e_0_0.id);
195
169
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
196
- expect(result.newEvents).toStrictEqual([]);
170
+ expect(result.newEvents).toEqual([]);
197
171
  });
198
172
  it('should acknowledge pending event and add new event', () => {
199
- const syncState = new SyncState.SyncState({
200
- pending: [e_0_0],
201
- rollbackTail: [],
202
- upstreamHead: EventId.ROOT,
203
- localHead: e_0_0.id,
204
- });
173
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
205
174
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_0_1] } });
206
175
  expectAdvance(result);
207
176
  expectEventArraysEqual(result.newSyncState.pending, []);
208
177
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1]);
209
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1.id);
178
+ expect(result.newSyncState.upstreamHead).toBe(e_0_1.id);
210
179
  expect(result.newSyncState.localHead).toMatchObject(e_0_1.id);
211
- expect(result.newEvents).toStrictEqual([e_0_1]);
180
+ expect(result.newEvents).toEqual([e_0_1]);
212
181
  });
213
182
  it('should acknowledge pending event and add multiple new events', () => {
214
- const syncState = new SyncState.SyncState({
215
- pending: [e_0_1],
216
- rollbackTail: [],
217
- upstreamHead: e_0_0.id,
218
- localHead: e_0_1.id,
219
- });
183
+ const syncState = { pending: [e_0_1], rollbackTail: [], upstreamHead: e_0_0.id, localHead: e_0_1.id };
220
184
  const result = run({
221
185
  syncState,
222
186
  payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0, e_1_1] },
@@ -224,17 +188,17 @@ describe('syncstate', () => {
224
188
  expectAdvance(result);
225
189
  expectEventArraysEqual(result.newSyncState.pending, []);
226
190
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0, e_1_1]);
227
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_1.id);
191
+ expect(result.newSyncState.upstreamHead).toBe(e_1_1.id);
228
192
  expect(result.newSyncState.localHead).toMatchObject(e_1_1.id);
229
- expect(result.newEvents).toStrictEqual([e_0_2, e_0_3, e_1_0, e_1_1]);
193
+ expect(result.newEvents).toEqual([e_0_2, e_0_3, e_1_0, e_1_1]);
230
194
  });
231
195
  it('should ignore local events (incoming is subset of pending)', () => {
232
- const syncState = new SyncState.SyncState({
196
+ const syncState = {
233
197
  pending: [e_r_1, e_0_0],
234
198
  rollbackTail: [],
235
199
  upstreamHead: EventId.ROOT,
236
200
  localHead: e_0_0.id,
237
- });
201
+ };
238
202
  const result = run({
239
203
  syncState,
240
204
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0] },
@@ -243,17 +207,17 @@ describe('syncstate', () => {
243
207
  expectAdvance(result);
244
208
  expectEventArraysEqual(result.newSyncState.pending, []);
245
209
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0]);
246
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
210
+ expect(result.newSyncState.upstreamHead).toBe(e_0_0.id);
247
211
  expect(result.newSyncState.localHead).toMatchObject(e_0_0.id);
248
- expect(result.newEvents).toStrictEqual([]);
212
+ expect(result.newEvents).toEqual([]);
249
213
  });
250
214
  it('should ignore local events (incoming is subset of pending case 2)', () => {
251
- const syncState = new SyncState.SyncState({
215
+ const syncState = {
252
216
  pending: [e_r_1, e_0_0, e_1_0],
253
217
  rollbackTail: [],
254
218
  upstreamHead: EventId.ROOT,
255
219
  localHead: e_0_0.id,
256
- });
220
+ };
257
221
  const result = run({
258
222
  syncState,
259
223
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0] },
@@ -262,17 +226,17 @@ describe('syncstate', () => {
262
226
  expectAdvance(result);
263
227
  expectEventArraysEqual(result.newSyncState.pending, [e_1_0]);
264
228
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0]);
265
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
229
+ expect(result.newSyncState.upstreamHead).toBe(e_0_0.id);
266
230
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
267
- expect(result.newEvents).toStrictEqual([]);
231
+ expect(result.newEvents).toEqual([]);
268
232
  });
269
233
  it('should ignore local events (incoming goes beyond pending)', () => {
270
- const syncState = new SyncState.SyncState({
234
+ const syncState = {
271
235
  pending: [e_r_1, e_0_0, e_0_1],
272
236
  rollbackTail: [],
273
237
  upstreamHead: EventId.ROOT,
274
238
  localHead: e_0_1.id,
275
- });
239
+ };
276
240
  const result = run({
277
241
  syncState,
278
242
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_1_0] },
@@ -281,37 +245,27 @@ describe('syncstate', () => {
281
245
  expectAdvance(result);
282
246
  expectEventArraysEqual(result.newSyncState.pending, []);
283
247
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_r_1, e_0_0, e_0_1, e_1_0]);
284
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
248
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
285
249
  expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
286
- expect(result.newEvents).toStrictEqual([e_1_0]);
250
+ expect(result.newEvents).toEqual([e_1_0]);
287
251
  });
288
252
  });
289
253
  describe('upstream-advance: rebase', () => {
290
254
  it('should rebase single local event to end', () => {
291
- const syncState = new SyncState.SyncState({
292
- pending: [e_0_0],
293
- rollbackTail: [],
294
- upstreamHead: EventId.ROOT,
295
- localHead: e_0_0.id,
296
- });
255
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
297
256
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1] } });
298
257
  const e_0_0_e_0_2 = e_0_0.rebase_(e_0_1.id);
299
258
  expectRebase(result);
300
259
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_0_2]);
301
260
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1]);
302
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1.id);
261
+ expect(result.newSyncState.upstreamHead).toBe(e_0_1.id);
303
262
  expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_0_2.id);
304
263
  expectEventArraysEqual(result.eventsToRollback, [e_0_0]);
305
264
  expectEventArraysEqual(result.newEvents, [e_0_1, e_0_0_e_0_2]);
306
265
  });
307
266
  it('should rebase different event with same id (no rollback tail)', () => {
308
267
  const e_0_0_b = new TestEvent({ global: 0, local: 0 }, EventId.ROOT, '0_0_b', true);
309
- const syncState = new SyncState.SyncState({
310
- pending: [e_0_0_b],
311
- rollbackTail: [],
312
- upstreamHead: EventId.ROOT,
313
- localHead: e_0_0_b.id,
314
- });
268
+ const syncState = { pending: [e_0_0_b], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0_b.id };
315
269
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
316
270
  const e_0_0_e_1_0 = e_0_0_b.rebase_(e_0_0.id);
317
271
  expectRebase(result);
@@ -319,17 +273,17 @@ describe('syncstate', () => {
319
273
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0]);
320
274
  expectEventArraysEqual(result.newEvents, [e_0_0, e_0_0_e_1_0]);
321
275
  expectEventArraysEqual(result.eventsToRollback, [e_0_0_b]);
322
- expect(result.newSyncState.upstreamHead).toMatchObject(e_0_0.id);
276
+ expect(result.newSyncState.upstreamHead).toBe(e_0_0.id);
323
277
  expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_1_0.id);
324
278
  });
325
279
  it('should rebase different event with same id', () => {
326
280
  const e_1_0_b = new TestEvent({ global: 1, local: 0 }, e_0_0.id, '1_0_b', false);
327
- const syncState = new SyncState.SyncState({
281
+ const syncState = {
328
282
  pending: [e_1_0_b],
329
283
  rollbackTail: [e_0_0, e_0_1],
330
284
  upstreamHead: EventId.ROOT,
331
285
  localHead: e_1_0_b.id,
332
- });
286
+ };
333
287
  const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0] } });
334
288
  const e_1_0_e_2_0 = e_1_0_b.rebase_(e_1_0.id);
335
289
  expectRebase(result);
@@ -337,16 +291,11 @@ describe('syncstate', () => {
337
291
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_1, e_1_0]);
338
292
  expectEventArraysEqual(result.newEvents, [e_1_0, e_1_0_e_2_0]);
339
293
  expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1, e_1_0_b]);
340
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
294
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
341
295
  expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
342
296
  });
343
297
  it('should rebase single local event to end (more incoming events)', () => {
344
- const syncState = new SyncState.SyncState({
345
- pending: [e_0_0],
346
- rollbackTail: [],
347
- upstreamHead: EventId.ROOT,
348
- localHead: e_0_0.id,
349
- });
298
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
350
299
  const result = run({
351
300
  syncState,
352
301
  payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] },
@@ -355,16 +304,16 @@ describe('syncstate', () => {
355
304
  expectRebase(result);
356
305
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0_e_2_0]);
357
306
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0]);
358
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
307
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
359
308
  expect(result.newSyncState.localHead).toMatchObject(e_0_0_e_2_0.id);
360
309
  });
361
310
  it('should only rebase divergent events when first event matches', () => {
362
- const syncState = new SyncState.SyncState({
311
+ const syncState = {
363
312
  pending: [e_0_0, e_0_1],
364
313
  rollbackTail: [],
365
314
  upstreamHead: EventId.ROOT,
366
315
  localHead: e_0_0.id,
367
- });
316
+ };
368
317
  const result = run({
369
318
  syncState,
370
319
  payload: { _tag: 'upstream-advance', newEvents: [e_0_0, e_0_2, e_0_3, e_1_0] },
@@ -375,16 +324,16 @@ describe('syncstate', () => {
375
324
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_0, e_0_2, e_0_3, e_1_0]);
376
325
  expectEventArraysEqual(result.eventsToRollback, [e_0_1]);
377
326
  expectEventArraysEqual(result.newEvents, [e_0_2, e_0_3, e_1_0, e_0_1_e_1_1]);
378
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
327
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
379
328
  expect(result.newSyncState.localHead).toMatchObject(e_0_1_e_1_1.id);
380
329
  });
381
330
  it('should rebase all local events when incoming chain starts differently', () => {
382
- const syncState = new SyncState.SyncState({
331
+ const syncState = {
383
332
  pending: [e_0_0, e_0_1],
384
333
  rollbackTail: [],
385
334
  upstreamHead: EventId.ROOT,
386
335
  localHead: e_0_1.id,
387
- });
336
+ };
388
337
  const result = run({
389
338
  syncState,
390
339
  payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_2, e_0_3, e_1_0] },
@@ -396,35 +345,30 @@ describe('syncstate', () => {
396
345
  expectEventArraysEqual(result.newSyncState.rollbackTail, [e_0_1, e_0_2, e_0_3, e_1_0]);
397
346
  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]);
398
347
  expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1]);
399
- expect(result.newSyncState.upstreamHead).toMatchObject(e_1_0.id);
348
+ expect(result.newSyncState.upstreamHead).toBe(e_1_0.id);
400
349
  expect(result.newSyncState.localHead).toMatchObject(e_0_1_e_1_2.id);
401
350
  });
402
351
  describe('local-push', () => {
403
352
  describe('advance', () => {
404
353
  it('should advance with new events', () => {
405
- const syncState = new SyncState.SyncState({
406
- pending: [e_0_0],
407
- rollbackTail: [],
408
- upstreamHead: EventId.ROOT,
409
- localHead: e_0_0.id,
410
- });
354
+ const syncState = { pending: [e_0_0], rollbackTail: [], upstreamHead: EventId.ROOT, localHead: e_0_0.id };
411
355
  const result = run({ syncState, payload: { _tag: 'local-push', newEvents: [e_0_1, e_0_2, e_0_3] } });
412
356
  expectAdvance(result);
413
357
  expectEventArraysEqual(result.newSyncState.pending, [e_0_0, e_0_1, e_0_2, e_0_3]);
414
358
  expectEventArraysEqual(result.newSyncState.rollbackTail, []);
415
- expect(result.newSyncState.upstreamHead).toMatchObject(EventId.ROOT);
359
+ expect(result.newSyncState.upstreamHead).toBe(EventId.ROOT);
416
360
  expect(result.newSyncState.localHead).toMatchObject(e_0_3.id);
417
361
  expectEventArraysEqual(result.newEvents, [e_0_1, e_0_2, e_0_3]);
418
362
  });
419
363
  });
420
364
  describe('reject', () => {
421
365
  it('should reject when new events are greater than pending events', () => {
422
- const syncState = new SyncState.SyncState({
366
+ const syncState = {
423
367
  pending: [e_0_0, e_0_1],
424
368
  rollbackTail: [],
425
369
  upstreamHead: EventId.ROOT,
426
370
  localHead: e_0_1.id,
427
- });
371
+ };
428
372
  const result = run({ syncState, payload: { _tag: 'local-push', newEvents: [e_0_1, e_0_2] } });
429
373
  expectReject(result);
430
374
  expect(result.expectedMinimumId).toMatchObject(e_0_2.id);
@@ -437,10 +381,10 @@ describe('syncstate', () => {
437
381
  const expectEventArraysEqual = (actual, expected) => {
438
382
  expect(actual.length).toBe(expected.length);
439
383
  actual.forEach((event, i) => {
440
- expect(event.id).toStrictEqual(expected[i].id);
441
- expect(event.parentId).toStrictEqual(expected[i].parentId);
442
- expect(event.mutation).toStrictEqual(expected[i].mutation);
443
- expect(event.args).toStrictEqual(expected[i].args);
384
+ expect(event.id).toEqual(expected[i].id);
385
+ expect(event.parentId).toEqual(expected[i].parentId);
386
+ expect(event.mutation).toEqual(expected[i].mutation);
387
+ expect(event.args).toEqual(expected[i].args);
444
388
  });
445
389
  };
446
390
  function expectAdvance(result) {