@livestore/common 0.3.0-dev.47 → 0.3.0-dev.48

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 (154) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-types.d.ts +8 -6
  3. package/dist/adapter-types.d.ts.map +1 -1
  4. package/dist/adapter-types.js +2 -2
  5. package/dist/adapter-types.js.map +1 -1
  6. package/dist/devtools/devtools-messages-client-session.d.ts +25 -25
  7. package/dist/devtools/devtools-messages-client-session.js +3 -3
  8. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  9. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  10. package/dist/devtools/devtools-messages-leader.d.ts +30 -30
  11. package/dist/devtools/devtools-messages-leader.js +3 -3
  12. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  13. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  14. package/dist/leader-thread/LeaderSyncProcessor.js +27 -25
  15. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  16. package/dist/leader-thread/eventlog.d.ts +10 -10
  17. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  18. package/dist/leader-thread/eventlog.js +24 -24
  19. package/dist/leader-thread/eventlog.js.map +1 -1
  20. package/dist/leader-thread/leader-worker-devtools.js +1 -1
  21. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  22. package/dist/leader-thread/materialize-event.d.ts +3 -3
  23. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  24. package/dist/leader-thread/materialize-event.js +19 -15
  25. package/dist/leader-thread/materialize-event.js.map +1 -1
  26. package/dist/leader-thread/types.d.ts +4 -4
  27. package/dist/leader-thread/types.d.ts.map +1 -1
  28. package/dist/make-client-session.d.ts +1 -1
  29. package/dist/make-client-session.d.ts.map +1 -1
  30. package/dist/make-client-session.js +2 -1
  31. package/dist/make-client-session.js.map +1 -1
  32. package/dist/materializer-helper.d.ts.map +1 -1
  33. package/dist/materializer-helper.js +4 -2
  34. package/dist/materializer-helper.js.map +1 -1
  35. package/dist/rematerialize-from-eventlog.js +9 -9
  36. package/dist/rematerialize-from-eventlog.js.map +1 -1
  37. package/dist/schema/EventId.d.ts +28 -28
  38. package/dist/schema/EventId.d.ts.map +1 -1
  39. package/dist/schema/EventId.js +9 -9
  40. package/dist/schema/EventId.js.map +1 -1
  41. package/dist/schema/EventId.test.js +5 -5
  42. package/dist/schema/EventId.test.js.map +1 -1
  43. package/dist/schema/EventNumber.d.ts +57 -0
  44. package/dist/schema/EventNumber.d.ts.map +1 -0
  45. package/dist/schema/EventNumber.js +82 -0
  46. package/dist/schema/EventNumber.js.map +1 -0
  47. package/dist/schema/EventNumber.test.d.ts +2 -0
  48. package/dist/schema/EventNumber.test.d.ts.map +1 -0
  49. package/dist/schema/EventNumber.test.js +11 -0
  50. package/dist/schema/EventNumber.test.js.map +1 -0
  51. package/dist/schema/EventSequenceNumber.d.ts +57 -0
  52. package/dist/schema/EventSequenceNumber.d.ts.map +1 -0
  53. package/dist/schema/EventSequenceNumber.js +82 -0
  54. package/dist/schema/EventSequenceNumber.js.map +1 -0
  55. package/dist/schema/EventSequenceNumber.test.d.ts +2 -0
  56. package/dist/schema/EventSequenceNumber.test.d.ts.map +1 -0
  57. package/dist/schema/EventSequenceNumber.test.js +11 -0
  58. package/dist/schema/EventSequenceNumber.test.js.map +1 -0
  59. package/dist/schema/LiveStoreEvent.d.ts +81 -79
  60. package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
  61. package/dist/schema/LiveStoreEvent.js +31 -32
  62. package/dist/schema/LiveStoreEvent.js.map +1 -1
  63. package/dist/schema/mod.d.ts +1 -1
  64. package/dist/schema/mod.d.ts.map +1 -1
  65. package/dist/schema/mod.js +1 -1
  66. package/dist/schema/mod.js.map +1 -1
  67. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  68. package/dist/schema/state/sqlite/query-builder/impl.js +2 -2
  69. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  70. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +3 -3
  71. package/dist/schema/state/sqlite/query-builder/impl.test.js +9 -0
  72. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  73. package/dist/schema/state/sqlite/system-tables.d.ts +52 -52
  74. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
  75. package/dist/schema/state/sqlite/system-tables.js +11 -10
  76. package/dist/schema/state/sqlite/system-tables.js.map +1 -1
  77. package/dist/sync/ClientSessionSyncProcessor.js +6 -6
  78. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  79. package/dist/sync/next/compact-events.js +38 -35
  80. package/dist/sync/next/compact-events.js.map +1 -1
  81. package/dist/sync/next/facts.d.ts +4 -4
  82. package/dist/sync/next/facts.d.ts.map +1 -1
  83. package/dist/sync/next/facts.js +8 -8
  84. package/dist/sync/next/facts.js.map +1 -1
  85. package/dist/sync/next/history-dag-common.d.ts +4 -4
  86. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  87. package/dist/sync/next/history-dag-common.js +7 -4
  88. package/dist/sync/next/history-dag-common.js.map +1 -1
  89. package/dist/sync/next/history-dag.d.ts +0 -2
  90. package/dist/sync/next/history-dag.d.ts.map +1 -1
  91. package/dist/sync/next/history-dag.js +15 -13
  92. package/dist/sync/next/history-dag.js.map +1 -1
  93. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  94. package/dist/sync/next/rebase-events.js +10 -4
  95. package/dist/sync/next/rebase-events.js.map +1 -1
  96. package/dist/sync/next/test/compact-events.calculator.test.js +13 -13
  97. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  98. package/dist/sync/next/test/compact-events.test.js +31 -31
  99. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  100. package/dist/sync/next/test/event-fixtures.d.ts +10 -0
  101. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  102. package/dist/sync/next/test/event-fixtures.js +19 -13
  103. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  104. package/dist/sync/sync.d.ts +11 -11
  105. package/dist/sync/sync.d.ts.map +1 -1
  106. package/dist/sync/sync.js +5 -5
  107. package/dist/sync/sync.js.map +1 -1
  108. package/dist/sync/syncstate.d.ts +18 -18
  109. package/dist/sync/syncstate.d.ts.map +1 -1
  110. package/dist/sync/syncstate.js +46 -47
  111. package/dist/sync/syncstate.js.map +1 -1
  112. package/dist/sync/syncstate.test.js +110 -110
  113. package/dist/sync/syncstate.test.js.map +1 -1
  114. package/dist/sync/validate-push-payload.d.ts +2 -2
  115. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  116. package/dist/sync/validate-push-payload.js +4 -4
  117. package/dist/sync/validate-push-payload.js.map +1 -1
  118. package/dist/version.d.ts +2 -2
  119. package/dist/version.js +2 -2
  120. package/package.json +4 -4
  121. package/src/adapter-types.ts +6 -4
  122. package/src/devtools/devtools-messages-client-session.ts +3 -3
  123. package/src/devtools/devtools-messages-leader.ts +3 -3
  124. package/src/leader-thread/LeaderSyncProcessor.ts +36 -29
  125. package/src/leader-thread/eventlog.ts +36 -31
  126. package/src/leader-thread/leader-worker-devtools.ts +1 -1
  127. package/src/leader-thread/materialize-event.ts +21 -17
  128. package/src/leader-thread/types.ts +4 -4
  129. package/src/make-client-session.ts +2 -0
  130. package/src/materializer-helper.ts +5 -2
  131. package/src/rematerialize-from-eventlog.ts +10 -10
  132. package/src/schema/EventSequenceNumber.test.ts +12 -0
  133. package/src/schema/EventSequenceNumber.ts +121 -0
  134. package/src/schema/LiveStoreEvent.ts +66 -65
  135. package/src/schema/mod.ts +1 -1
  136. package/src/schema/state/sqlite/query-builder/impl.test.ts +9 -0
  137. package/src/schema/state/sqlite/query-builder/impl.ts +3 -2
  138. package/src/schema/state/sqlite/system-tables.ts +11 -10
  139. package/src/sync/ClientSessionSyncProcessor.ts +6 -6
  140. package/src/sync/next/compact-events.ts +38 -35
  141. package/src/sync/next/facts.ts +12 -9
  142. package/src/sync/next/history-dag-common.ts +9 -6
  143. package/src/sync/next/history-dag.ts +15 -16
  144. package/src/sync/next/rebase-events.ts +10 -4
  145. package/src/sync/next/test/compact-events.calculator.test.ts +13 -13
  146. package/src/sync/next/test/compact-events.test.ts +31 -31
  147. package/src/sync/next/test/event-fixtures.ts +20 -13
  148. package/src/sync/sync.ts +7 -7
  149. package/src/sync/syncstate.test.ts +112 -112
  150. package/src/sync/syncstate.ts +58 -48
  151. package/src/sync/validate-push-payload.ts +5 -5
  152. package/src/version.ts +2 -2
  153. package/src/schema/EventId.test.ts +0 -12
  154. package/src/schema/EventId.ts +0 -106
@@ -1,15 +1,15 @@
1
1
  /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
2
  import { describe, expect, it } from 'vitest';
3
- import * as EventId from '../schema/EventId.js';
3
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber.js';
4
4
  import * as LiveStoreEvent from '../schema/LiveStoreEvent.js';
5
5
  import * as SyncState from './syncstate.js';
6
6
  class TestEvent extends LiveStoreEvent.EncodedWithMeta {
7
7
  payload;
8
8
  isLocal;
9
- constructor(id, parentId, payload, isLocal) {
9
+ constructor(seqNum, parentSeqNum, payload, isLocal) {
10
10
  super({
11
- id: EventId.make(id),
12
- parentId: EventId.make(parentId),
11
+ seqNum: EventSequenceNumber.make(seqNum),
12
+ parentSeqNum: EventSequenceNumber.make(parentSeqNum),
13
13
  name: 'a',
14
14
  args: payload,
15
15
  clientId: 'static-local-id',
@@ -18,17 +18,17 @@ class TestEvent extends LiveStoreEvent.EncodedWithMeta {
18
18
  this.payload = payload;
19
19
  this.isLocal = isLocal;
20
20
  }
21
- rebase_ = (parentId) => {
22
- return this.rebase(parentId, this.isLocal);
21
+ rebase_ = (parentSeqNum) => {
22
+ return this.rebase(parentSeqNum, this.isLocal);
23
23
  };
24
24
  }
25
- const e0_1 = new TestEvent({ global: 0, client: 1 }, EventId.ROOT, 'a', true);
26
- const e1_0 = new TestEvent({ global: 1, client: 0 }, EventId.ROOT, 'a', false);
27
- const e1_1 = new TestEvent({ global: 1, client: 1 }, e1_0.id, 'a', true);
28
- const e1_2 = new TestEvent({ global: 1, client: 2 }, e1_1.id, 'a', true);
29
- const e1_3 = new TestEvent({ global: 1, client: 3 }, e1_2.id, 'a', true);
30
- const e2_0 = new TestEvent({ global: 2, client: 0 }, e1_0.id, 'a', false);
31
- const e2_1 = new TestEvent({ global: 2, client: 1 }, e2_0.id, 'a', true);
25
+ const e0_1 = new TestEvent({ global: 0, client: 1 }, EventSequenceNumber.ROOT, 'a', true);
26
+ const e1_0 = new TestEvent({ global: 1, client: 0 }, EventSequenceNumber.ROOT, 'a', false);
27
+ const e1_1 = new TestEvent({ global: 1, client: 1 }, e1_0.seqNum, 'a', true);
28
+ const e1_2 = new TestEvent({ global: 1, client: 2 }, e1_1.seqNum, 'a', true);
29
+ const e1_3 = new TestEvent({ global: 1, client: 3 }, e1_2.seqNum, 'a', true);
30
+ const e2_0 = new TestEvent({ global: 2, client: 0 }, e1_0.seqNum, 'a', false);
31
+ const e2_1 = new TestEvent({ global: 2, client: 1 }, e2_0.seqNum, 'a', true);
32
32
  const isEqualEvent = LiveStoreEvent.isEqualEncoded;
33
33
  const isClientEvent = (event) => event.isLocal;
34
34
  describe('syncstate', () => {
@@ -38,11 +38,11 @@ describe('syncstate', () => {
38
38
  it('should rollback until start', () => {
39
39
  const syncState = new SyncState.SyncState({
40
40
  pending: [e2_0],
41
- upstreamHead: EventId.ROOT,
42
- localHead: e2_0.id,
41
+ upstreamHead: EventSequenceNumber.ROOT,
42
+ localHead: e2_0.seqNum,
43
43
  });
44
- const e1_0_e2_0 = e1_0.rebase_(e2_0.id);
45
- const e1_1_e2_1 = e1_1.rebase_(e1_0_e2_0.id);
44
+ const e1_0_e2_0 = e1_0.rebase_(e2_0.seqNum);
45
+ const e1_1_e2_1 = e1_1.rebase_(e1_0_e2_0.seqNum);
46
46
  const result = merge({
47
47
  syncState,
48
48
  payload: SyncState.PayloadUpstreamRebase.make({
@@ -50,21 +50,21 @@ describe('syncstate', () => {
50
50
  newEvents: [e1_0_e2_0, e1_1_e2_1],
51
51
  }),
52
52
  });
53
- const e2_0_e3_0 = e2_0.rebase_(e1_0_e2_0.id);
53
+ const e2_0_e3_0 = e2_0.rebase_(e1_0_e2_0.seqNum);
54
54
  expectRebase(result);
55
55
  expectEventArraysEqual(result.newSyncState.pending, [e2_0_e3_0]);
56
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_1_e2_1.id);
57
- expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.id);
56
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_1_e2_1.seqNum);
57
+ expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.seqNum);
58
58
  expectEventArraysEqual(result.newEvents, [e1_0_e2_0, e1_1_e2_1, e2_0_e3_0]);
59
59
  expectEventArraysEqual(result.rollbackEvents, [e1_0, e1_1, e2_0]);
60
60
  });
61
61
  it('should rollback only to specified point', () => {
62
62
  const syncState = new SyncState.SyncState({
63
63
  pending: [e2_0],
64
- upstreamHead: EventId.ROOT,
65
- localHead: e2_0.id,
64
+ upstreamHead: EventSequenceNumber.ROOT,
65
+ localHead: e2_0.seqNum,
66
66
  });
67
- const e1_1_e2_0 = e1_1.rebase_(e1_0.id);
67
+ const e1_1_e2_0 = e1_1.rebase_(e1_0.seqNum);
68
68
  const result = merge({
69
69
  syncState,
70
70
  payload: SyncState.PayloadUpstreamRebase.make({
@@ -72,19 +72,19 @@ describe('syncstate', () => {
72
72
  rollbackEvents: [e1_1],
73
73
  }),
74
74
  });
75
- const e2_0_e3_0 = e2_0.rebase_(e1_1_e2_0.id);
75
+ const e2_0_e3_0 = e2_0.rebase_(e1_1_e2_0.seqNum);
76
76
  expectRebase(result);
77
77
  expectEventArraysEqual(result.newSyncState.pending, [e2_0_e3_0]);
78
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_1_e2_0.id);
79
- expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.id);
78
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_1_e2_0.seqNum);
79
+ expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.seqNum);
80
80
  expectEventArraysEqual(result.newEvents, [e1_1_e2_0, e2_0_e3_0]);
81
81
  expectEventArraysEqual(result.rollbackEvents, [e1_1, e2_0]);
82
82
  });
83
83
  it('should work for empty pending', () => {
84
84
  const syncState = new SyncState.SyncState({
85
85
  pending: [],
86
- upstreamHead: EventId.ROOT,
87
- localHead: e1_0.id,
86
+ upstreamHead: EventSequenceNumber.ROOT,
87
+ localHead: e1_0.seqNum,
88
88
  });
89
89
  const result = merge({
90
90
  syncState,
@@ -92,26 +92,26 @@ describe('syncstate', () => {
92
92
  });
93
93
  expectRebase(result);
94
94
  expectEventArraysEqual(result.newSyncState.pending, []);
95
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
96
- expect(result.newSyncState.localHead).toMatchObject(e2_0.id);
95
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
96
+ expect(result.newSyncState.localHead).toMatchObject(e2_0.seqNum);
97
97
  expect(result.newEvents).toStrictEqual([e2_0]);
98
98
  });
99
99
  });
100
100
  describe('upstream-advance: advance', () => {
101
- it('should throw error if newEvents are not sorted in ascending order by eventId (client)', () => {
101
+ it('should throw error if newEvents are not sorted in ascending order by event number (client)', () => {
102
102
  const syncState = new SyncState.SyncState({
103
103
  pending: [e1_0],
104
- upstreamHead: EventId.ROOT,
105
- localHead: e1_0.id,
104
+ upstreamHead: EventSequenceNumber.ROOT,
105
+ localHead: e1_0.seqNum,
106
106
  });
107
107
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_1, e1_0] } });
108
108
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
109
109
  });
110
- it('should throw error if newEvents are not sorted in ascending order by eventId (global)', () => {
110
+ it('should throw error if newEvents are not sorted in ascending order by event number (global)', () => {
111
111
  const syncState = new SyncState.SyncState({
112
112
  pending: [e1_0],
113
- upstreamHead: EventId.ROOT,
114
- localHead: e1_0.id,
113
+ upstreamHead: EventSequenceNumber.ROOT,
114
+ localHead: e1_0.seqNum,
115
115
  });
116
116
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e2_0, e1_0] } });
117
117
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
@@ -119,8 +119,8 @@ describe('syncstate', () => {
119
119
  it('should throw error if incoming event is < expected upstream head', () => {
120
120
  const syncState = new SyncState.SyncState({
121
121
  pending: [],
122
- upstreamHead: e2_0.id,
123
- localHead: e2_0.id,
122
+ upstreamHead: e2_0.seqNum,
123
+ localHead: e2_0.seqNum,
124
124
  });
125
125
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_0] } });
126
126
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
@@ -128,8 +128,8 @@ describe('syncstate', () => {
128
128
  it('should throw error if incoming event is = expected upstream head', () => {
129
129
  const syncState = new SyncState.SyncState({
130
130
  pending: [],
131
- upstreamHead: e2_0.id,
132
- localHead: e2_0.id,
131
+ upstreamHead: e2_0.seqNum,
132
+ localHead: e2_0.seqNum,
133
133
  });
134
134
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e2_0] } });
135
135
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
@@ -137,50 +137,50 @@ describe('syncstate', () => {
137
137
  it('should confirm pending event when receiving matching event', () => {
138
138
  const syncState = new SyncState.SyncState({
139
139
  pending: [e1_0],
140
- upstreamHead: EventId.ROOT,
141
- localHead: e1_0.id,
140
+ upstreamHead: EventSequenceNumber.ROOT,
141
+ localHead: e1_0.seqNum,
142
142
  });
143
143
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_0] } });
144
144
  expectAdvance(result);
145
145
  expectEventArraysEqual(result.newSyncState.pending, []);
146
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.id);
147
- expect(result.newSyncState.localHead).toMatchObject(e1_0.id);
146
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.seqNum);
147
+ expect(result.newSyncState.localHead).toMatchObject(e1_0.seqNum);
148
148
  expectEventArraysEqual(result.newEvents, []);
149
149
  expectEventArraysEqual(result.confirmedEvents, [e1_0]);
150
150
  });
151
151
  it('should confirm partial pending event when receiving matching event', () => {
152
152
  const syncState = new SyncState.SyncState({
153
153
  pending: [e1_0, e2_0],
154
- upstreamHead: EventId.ROOT,
155
- localHead: e2_0.id,
154
+ upstreamHead: EventSequenceNumber.ROOT,
155
+ localHead: e2_0.seqNum,
156
156
  });
157
157
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_0] } });
158
158
  expectAdvance(result);
159
159
  expectEventArraysEqual(result.newSyncState.pending, [e2_0]);
160
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.id);
161
- expect(result.newSyncState.localHead).toMatchObject(e2_0.id);
160
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.seqNum);
161
+ expect(result.newSyncState.localHead).toMatchObject(e2_0.seqNum);
162
162
  expectEventArraysEqual(result.newEvents, []);
163
163
  expectEventArraysEqual(result.confirmedEvents, [e1_0]);
164
164
  });
165
165
  it('should confirm pending event and add new event', () => {
166
166
  const syncState = new SyncState.SyncState({
167
167
  pending: [e1_0],
168
- upstreamHead: EventId.ROOT,
169
- localHead: e1_0.id,
168
+ upstreamHead: EventSequenceNumber.ROOT,
169
+ localHead: e1_0.seqNum,
170
170
  });
171
171
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_0, e1_1] } });
172
172
  expectAdvance(result);
173
173
  expectEventArraysEqual(result.newSyncState.pending, []);
174
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_1.id);
175
- expect(result.newSyncState.localHead).toMatchObject(e1_1.id);
174
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_1.seqNum);
175
+ expect(result.newSyncState.localHead).toMatchObject(e1_1.seqNum);
176
176
  expect(result.newEvents).toStrictEqual([e1_1]);
177
177
  expectEventArraysEqual(result.confirmedEvents, [e1_0]);
178
178
  });
179
179
  it('should confirm pending event and add multiple new events', () => {
180
180
  const syncState = new SyncState.SyncState({
181
181
  pending: [e1_1],
182
- upstreamHead: e1_0.id,
183
- localHead: e1_1.id,
182
+ upstreamHead: e1_0.seqNum,
183
+ localHead: e1_1.seqNum,
184
184
  });
185
185
  const result = merge({
186
186
  syncState,
@@ -188,16 +188,16 @@ describe('syncstate', () => {
188
188
  });
189
189
  expectAdvance(result);
190
190
  expectEventArraysEqual(result.newSyncState.pending, []);
191
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_1.id);
192
- expect(result.newSyncState.localHead).toMatchObject(e2_1.id);
191
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_1.seqNum);
192
+ expect(result.newSyncState.localHead).toMatchObject(e2_1.seqNum);
193
193
  expect(result.newEvents).toStrictEqual([e1_2, e1_3, e2_0, e2_1]);
194
194
  expectEventArraysEqual(result.confirmedEvents, [e1_1]);
195
195
  });
196
196
  it('should confirm pending global event while keep pending client events', () => {
197
197
  const syncState = new SyncState.SyncState({
198
198
  pending: [e1_0, e1_1],
199
- upstreamHead: EventId.ROOT,
200
- localHead: e1_1.id,
199
+ upstreamHead: EventSequenceNumber.ROOT,
200
+ localHead: e1_1.seqNum,
201
201
  });
202
202
  const result = merge({
203
203
  syncState,
@@ -205,16 +205,16 @@ describe('syncstate', () => {
205
205
  });
206
206
  expectAdvance(result);
207
207
  expectEventArraysEqual(result.newSyncState.pending, [e1_1]);
208
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.id);
209
- expect(result.newSyncState.localHead).toMatchObject(e1_1.id);
208
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.seqNum);
209
+ expect(result.newSyncState.localHead).toMatchObject(e1_1.seqNum);
210
210
  expectEventArraysEqual(result.newEvents, []);
211
211
  expectEventArraysEqual(result.confirmedEvents, [e1_0]);
212
212
  });
213
213
  it('should ignore client events (incoming is subset of pending)', () => {
214
214
  const syncState = new SyncState.SyncState({
215
215
  pending: [e0_1, e1_0],
216
- upstreamHead: EventId.ROOT,
217
- localHead: e1_0.id,
216
+ upstreamHead: EventSequenceNumber.ROOT,
217
+ localHead: e1_0.seqNum,
218
218
  });
219
219
  const result = merge({
220
220
  syncState,
@@ -223,16 +223,16 @@ describe('syncstate', () => {
223
223
  });
224
224
  expectAdvance(result);
225
225
  expectEventArraysEqual(result.newSyncState.pending, []);
226
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.id);
227
- expect(result.newSyncState.localHead).toMatchObject(e1_0.id);
226
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.seqNum);
227
+ expect(result.newSyncState.localHead).toMatchObject(e1_0.seqNum);
228
228
  expectEventArraysEqual(result.newEvents, []);
229
229
  expectEventArraysEqual(result.confirmedEvents, [e0_1, e1_0]);
230
230
  });
231
231
  it('should ignore client events (incoming is subset of pending case 2)', () => {
232
232
  const syncState = new SyncState.SyncState({
233
233
  pending: [e0_1, e1_0, e2_0],
234
- upstreamHead: EventId.ROOT,
235
- localHead: e1_0.id,
234
+ upstreamHead: EventSequenceNumber.ROOT,
235
+ localHead: e1_0.seqNum,
236
236
  });
237
237
  const result = merge({
238
238
  syncState,
@@ -241,16 +241,16 @@ describe('syncstate', () => {
241
241
  });
242
242
  expectAdvance(result);
243
243
  expectEventArraysEqual(result.newSyncState.pending, [e2_0]);
244
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.id);
245
- expect(result.newSyncState.localHead).toMatchObject(e2_0.id);
244
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_0.seqNum);
245
+ expect(result.newSyncState.localHead).toMatchObject(e2_0.seqNum);
246
246
  expectEventArraysEqual(result.newEvents, []);
247
247
  expectEventArraysEqual(result.confirmedEvents, [e0_1, e1_0]);
248
248
  });
249
249
  it('should ignore client events (incoming goes beyond pending)', () => {
250
250
  const syncState = new SyncState.SyncState({
251
251
  pending: [e0_1, e1_0, e1_1],
252
- upstreamHead: EventId.ROOT,
253
- localHead: e1_1.id,
252
+ upstreamHead: EventSequenceNumber.ROOT,
253
+ localHead: e1_1.seqNum,
254
254
  });
255
255
  const result = merge({
256
256
  syncState,
@@ -259,16 +259,16 @@ describe('syncstate', () => {
259
259
  });
260
260
  expectAdvance(result);
261
261
  expectEventArraysEqual(result.newSyncState.pending, []);
262
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
263
- expect(result.newSyncState.localHead).toMatchObject(e2_0.id);
262
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
263
+ expect(result.newSyncState.localHead).toMatchObject(e2_0.seqNum);
264
264
  expect(result.newEvents).toStrictEqual([e2_0]);
265
265
  expectEventArraysEqual(result.confirmedEvents, [e0_1, e1_0, e1_1]);
266
266
  });
267
267
  it('should fail if incoming event is ≤ local head', () => {
268
268
  const syncState = new SyncState.SyncState({
269
269
  pending: [],
270
- upstreamHead: e2_0.id,
271
- localHead: e2_0.id,
270
+ upstreamHead: e2_0.seqNum,
271
+ localHead: e2_0.seqNum,
272
272
  });
273
273
  const result = merge({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e1_0] } });
274
274
  expect(result).toMatchObject({ _tag: 'unexpected-error' });
@@ -278,94 +278,94 @@ describe('syncstate', () => {
278
278
  it('should rebase single client event to end', () => {
279
279
  const syncState = new SyncState.SyncState({
280
280
  pending: [e1_0],
281
- upstreamHead: EventId.ROOT,
282
- localHead: e1_0.id,
281
+ upstreamHead: EventSequenceNumber.ROOT,
282
+ localHead: e1_0.seqNum,
283
283
  });
284
284
  const result = merge({ syncState, payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e1_1] }) });
285
- const e1_0_e1_2 = e1_0.rebase_(e1_1.id);
285
+ const e1_0_e1_2 = e1_0.rebase_(e1_1.seqNum);
286
286
  expectRebase(result);
287
287
  expectEventArraysEqual(result.newSyncState.pending, [e1_0_e1_2]);
288
- expect(result.newSyncState.upstreamHead).toMatchObject(e1_1.id);
289
- expect(result.newSyncState.localHead).toMatchObject(e1_0_e1_2.id);
288
+ expect(result.newSyncState.upstreamHead).toMatchObject(e1_1.seqNum);
289
+ expect(result.newSyncState.localHead).toMatchObject(e1_0_e1_2.seqNum);
290
290
  expectEventArraysEqual(result.rollbackEvents, [e1_0]);
291
291
  expectEventArraysEqual(result.newEvents, [e1_1, e1_0_e1_2]);
292
292
  });
293
293
  it('should rebase different event with same id', () => {
294
- const e2_0_b = new TestEvent({ global: 1, client: 0 }, e1_0.id, '1_0_b', false);
294
+ const e2_0_b = new TestEvent({ global: 1, client: 0 }, e1_0.seqNum, '1_0_b', false);
295
295
  const syncState = new SyncState.SyncState({
296
296
  pending: [e2_0_b],
297
- upstreamHead: EventId.ROOT,
298
- localHead: e2_0_b.id,
297
+ upstreamHead: EventSequenceNumber.ROOT,
298
+ localHead: e2_0_b.seqNum,
299
299
  });
300
300
  const result = merge({ syncState, payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e2_0] }) });
301
- const e2_0_e3_0 = e2_0_b.rebase_(e2_0.id);
301
+ const e2_0_e3_0 = e2_0_b.rebase_(e2_0.seqNum);
302
302
  expectRebase(result);
303
303
  expectEventArraysEqual(result.newSyncState.pending, [e2_0_e3_0]);
304
304
  expectEventArraysEqual(result.newEvents, [e2_0, e2_0_e3_0]);
305
305
  expectEventArraysEqual(result.rollbackEvents, [e2_0_b]);
306
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
307
- expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.id);
306
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
307
+ expect(result.newSyncState.localHead).toMatchObject(e2_0_e3_0.seqNum);
308
308
  });
309
309
  it('should rebase single client event to end (more incoming events)', () => {
310
310
  const syncState = new SyncState.SyncState({
311
311
  pending: [e1_0],
312
- upstreamHead: EventId.ROOT,
313
- localHead: e1_0.id,
312
+ upstreamHead: EventSequenceNumber.ROOT,
313
+ localHead: e1_0.seqNum,
314
314
  });
315
315
  const result = merge({
316
316
  syncState,
317
317
  payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e1_1, e1_2, e1_3, e2_0] }),
318
318
  });
319
- const e1_0_e3_0 = e1_0.rebase_(e2_0.id);
319
+ const e1_0_e3_0 = e1_0.rebase_(e2_0.seqNum);
320
320
  expectRebase(result);
321
321
  expectEventArraysEqual(result.newSyncState.pending, [e1_0_e3_0]);
322
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
323
- expect(result.newSyncState.localHead).toMatchObject(e1_0_e3_0.id);
322
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
323
+ expect(result.newSyncState.localHead).toMatchObject(e1_0_e3_0.seqNum);
324
324
  });
325
325
  it('should only rebase divergent events when first event matches', () => {
326
326
  const syncState = new SyncState.SyncState({
327
327
  pending: [e1_0, e1_1],
328
- upstreamHead: EventId.ROOT,
329
- localHead: e1_0.id,
328
+ upstreamHead: EventSequenceNumber.ROOT,
329
+ localHead: e1_0.seqNum,
330
330
  });
331
331
  const result = merge({
332
332
  syncState,
333
333
  payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e1_0, e1_2, e1_3, e2_0] }),
334
334
  });
335
- const e1_1_e2_1 = e1_1.rebase_(e2_0.id);
335
+ const e1_1_e2_1 = e1_1.rebase_(e2_0.seqNum);
336
336
  expectRebase(result);
337
337
  expectEventArraysEqual(result.newSyncState.pending, [e1_1_e2_1]);
338
338
  expectEventArraysEqual(result.rollbackEvents, [e1_1]);
339
339
  expectEventArraysEqual(result.newEvents, [e1_2, e1_3, e2_0, e1_1_e2_1]);
340
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
341
- expect(result.newSyncState.localHead).toMatchObject(e1_1_e2_1.id);
340
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
341
+ expect(result.newSyncState.localHead).toMatchObject(e1_1_e2_1.seqNum);
342
342
  });
343
343
  it('should rebase all client events when incoming chain starts differently', () => {
344
344
  const syncState = new SyncState.SyncState({
345
345
  pending: [e1_0, e1_1],
346
- upstreamHead: EventId.ROOT,
347
- localHead: e1_1.id,
346
+ upstreamHead: EventSequenceNumber.ROOT,
347
+ localHead: e1_1.seqNum,
348
348
  });
349
349
  const result = merge({
350
350
  syncState,
351
351
  payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: [e1_1, e1_2, e1_3, e2_0] }),
352
352
  });
353
- const e1_0_e2_1 = e1_0.rebase_(e2_0.id);
354
- const e1_1_e2_2 = e1_1.rebase_(e1_0_e2_1.id);
353
+ const e1_0_e2_1 = e1_0.rebase_(e2_0.seqNum);
354
+ const e1_1_e2_2 = e1_1.rebase_(e1_0_e2_1.seqNum);
355
355
  expectRebase(result);
356
356
  expectEventArraysEqual(result.newSyncState.pending, [e1_0_e2_1, e1_1_e2_2]);
357
357
  expectEventArraysEqual(result.newEvents, [e1_1, e1_2, e1_3, e2_0, e1_0_e2_1, e1_1_e2_2]);
358
358
  expectEventArraysEqual(result.rollbackEvents, [e1_0, e1_1]);
359
- expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.id);
360
- expect(result.newSyncState.localHead).toMatchObject(e1_1_e2_2.id);
359
+ expect(result.newSyncState.upstreamHead).toMatchObject(e2_0.seqNum);
360
+ expect(result.newSyncState.localHead).toMatchObject(e1_1_e2_2.seqNum);
361
361
  });
362
362
  describe('local-push', () => {
363
363
  describe('advance', () => {
364
364
  it('should advance with new events', () => {
365
365
  const syncState = new SyncState.SyncState({
366
366
  pending: [e1_0],
367
- upstreamHead: EventId.ROOT,
368
- localHead: e1_0.id,
367
+ upstreamHead: EventSequenceNumber.ROOT,
368
+ localHead: e1_0.seqNum,
369
369
  });
370
370
  const result = merge({
371
371
  syncState,
@@ -373,8 +373,8 @@ describe('syncstate', () => {
373
373
  });
374
374
  expectAdvance(result);
375
375
  expectEventArraysEqual(result.newSyncState.pending, [e1_0, e1_1, e1_2, e1_3]);
376
- expect(result.newSyncState.upstreamHead).toMatchObject(EventId.ROOT);
377
- expect(result.newSyncState.localHead).toMatchObject(e1_3.id);
376
+ expect(result.newSyncState.upstreamHead).toMatchObject(EventSequenceNumber.ROOT);
377
+ expect(result.newSyncState.localHead).toMatchObject(e1_3.seqNum);
378
378
  expectEventArraysEqual(result.newEvents, [e1_1, e1_2, e1_3]);
379
379
  expectEventArraysEqual(result.confirmedEvents, []);
380
380
  });
@@ -383,15 +383,15 @@ describe('syncstate', () => {
383
383
  it('should reject when new events are greater than pending events', () => {
384
384
  const syncState = new SyncState.SyncState({
385
385
  pending: [e1_0, e1_1],
386
- upstreamHead: EventId.ROOT,
387
- localHead: e1_1.id,
386
+ upstreamHead: EventSequenceNumber.ROOT,
387
+ localHead: e1_1.seqNum,
388
388
  });
389
389
  const result = merge({
390
390
  syncState,
391
391
  payload: SyncState.PayloadLocalPush.make({ newEvents: [e1_1, e1_2] }),
392
392
  });
393
393
  expectReject(result);
394
- expect(result.expectedMinimumId).toMatchObject(e1_2.id);
394
+ expect(result.expectedMinimumId).toMatchObject(e1_2.seqNum);
395
395
  });
396
396
  });
397
397
  });
@@ -401,8 +401,8 @@ describe('syncstate', () => {
401
401
  const expectEventArraysEqual = (actual, expected) => {
402
402
  expect(actual.length).toBe(expected.length);
403
403
  actual.forEach((event, i) => {
404
- expect(event.id).toStrictEqual(expected[i].id);
405
- expect(event.parentId).toStrictEqual(expected[i].parentId);
404
+ expect(event.seqNum).toStrictEqual(expected[i].seqNum);
405
+ expect(event.parentSeqNum).toStrictEqual(expected[i].parentSeqNum);
406
406
  expect(event.name).toStrictEqual(expected[i].name);
407
407
  expect(event.args).toStrictEqual(expected[i].args);
408
408
  });
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  import { Effect } from '@livestore/utils/effect';
2
- import type { EventId, LiveStoreEvent } from '../schema/mod.js';
2
+ import type { EventSequenceNumber, LiveStoreEvent } from '../schema/mod.js';
3
3
  import { InvalidPushError } from './sync.js';
4
- export declare const validatePushPayload: (batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>, currentEventId: EventId.GlobalEventId) => Effect.Effect<undefined, InvalidPushError, never>;
4
+ export declare const validatePushPayload: (batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>, currentEventSequenceNumber: EventSequenceNumber.GlobalEventSequenceNumber) => Effect.Effect<undefined, InvalidPushError, never>;
5
5
  //# sourceMappingURL=validate-push-payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-push-payload.d.ts","sourceRoot":"","sources":["../../src/sync/validate-push-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACrD,gBAAgB,OAAO,CAAC,aAAa,sDAYnC,CAAA"}
1
+ {"version":3,"file":"validate-push-payload.d.ts","sourceRoot":"","sources":["../../src/sync/validate-push-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACrD,4BAA4B,mBAAmB,CAAC,yBAAyB,sDAYvE,CAAA"}
@@ -1,13 +1,13 @@
1
1
  import { Effect } from '@livestore/utils/effect';
2
2
  import { InvalidPushError } from './sync.js';
3
3
  // TODO proper batch validation
4
- export const validatePushPayload = (batch, currentEventId) => Effect.gen(function* () {
5
- if (batch[0].id <= currentEventId) {
4
+ export const validatePushPayload = (batch, currentEventSequenceNumber) => Effect.gen(function* () {
5
+ if (batch[0].seqNum <= currentEventSequenceNumber) {
6
6
  return yield* InvalidPushError.make({
7
7
  reason: {
8
8
  _tag: 'ServerAhead',
9
- minimumExpectedId: currentEventId + 1,
10
- providedId: batch[0].id,
9
+ minimumExpectedNum: currentEventSequenceNumber + 1,
10
+ providedNum: batch[0].seqNum,
11
11
  },
12
12
  });
13
13
  }