@livestore/common 0.0.0-snapshot-2ef046b02334f52613d31dbe06af53487685edc0 → 0.0.0-snapshot-8115ad48d5a57244358c943ecc92bb0a30274b87

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 (272) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +83 -221
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/__tests__/fixture.js +33 -11
  5. package/dist/__tests__/fixture.js.map +1 -1
  6. package/dist/adapter-types.d.ts +34 -13
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +20 -2
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/bounded-collections.d.ts +1 -1
  11. package/dist/bounded-collections.d.ts.map +1 -1
  12. package/dist/debug-info.d.ts.map +1 -1
  13. package/dist/debug-info.js +1 -0
  14. package/dist/debug-info.js.map +1 -1
  15. package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
  16. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  17. package/dist/devtools/devtools-messages-leader.d.ts +45 -45
  18. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  19. package/dist/devtools/devtools-messages-leader.js +11 -11
  20. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  21. package/dist/index.d.ts +2 -5
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -5
  24. package/dist/index.js.map +1 -1
  25. package/dist/leader-thread/LeaderSyncProcessor.d.ts +25 -12
  26. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  27. package/dist/leader-thread/LeaderSyncProcessor.js +146 -98
  28. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  29. package/dist/leader-thread/{apply-mutation.d.ts → apply-event.d.ts} +7 -7
  30. package/dist/leader-thread/apply-event.d.ts.map +1 -0
  31. package/dist/leader-thread/{apply-mutation.js → apply-event.js} +45 -45
  32. package/dist/leader-thread/apply-event.js.map +1 -0
  33. package/dist/leader-thread/eventlog.d.ts +27 -0
  34. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  35. package/dist/leader-thread/eventlog.js +123 -0
  36. package/dist/leader-thread/eventlog.js.map +1 -0
  37. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  38. package/dist/leader-thread/leader-worker-devtools.js +21 -19
  39. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  40. package/dist/leader-thread/make-leader-thread-layer.d.ts +16 -4
  41. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  42. package/dist/leader-thread/make-leader-thread-layer.js +23 -16
  43. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  44. package/dist/leader-thread/mod.d.ts +1 -1
  45. package/dist/leader-thread/mod.d.ts.map +1 -1
  46. package/dist/leader-thread/mod.js +1 -1
  47. package/dist/leader-thread/mod.js.map +1 -1
  48. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  49. package/dist/leader-thread/recreate-db.js +6 -7
  50. package/dist/leader-thread/recreate-db.js.map +1 -1
  51. package/dist/leader-thread/types.d.ts +14 -15
  52. package/dist/leader-thread/types.d.ts.map +1 -1
  53. package/dist/materializer-helper.d.ts +23 -0
  54. package/dist/materializer-helper.d.ts.map +1 -0
  55. package/dist/materializer-helper.js +70 -0
  56. package/dist/materializer-helper.js.map +1 -0
  57. package/dist/query-builder/api.d.ts +56 -51
  58. package/dist/query-builder/api.d.ts.map +1 -1
  59. package/dist/query-builder/api.js +3 -5
  60. package/dist/query-builder/api.js.map +1 -1
  61. package/dist/query-builder/astToSql.d.ts.map +1 -1
  62. package/dist/query-builder/astToSql.js +59 -37
  63. package/dist/query-builder/astToSql.js.map +1 -1
  64. package/dist/query-builder/impl.d.ts +2 -3
  65. package/dist/query-builder/impl.d.ts.map +1 -1
  66. package/dist/query-builder/impl.js +48 -46
  67. package/dist/query-builder/impl.js.map +1 -1
  68. package/dist/query-builder/impl.test.d.ts +86 -1
  69. package/dist/query-builder/impl.test.d.ts.map +1 -1
  70. package/dist/query-builder/impl.test.js +223 -36
  71. package/dist/query-builder/impl.test.js.map +1 -1
  72. package/dist/rehydrate-from-eventlog.d.ts +15 -0
  73. package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
  74. package/dist/{rehydrate-from-mutationlog.js → rehydrate-from-eventlog.js} +26 -25
  75. package/dist/rehydrate-from-eventlog.js.map +1 -0
  76. package/dist/schema/EventDef.d.ts +136 -0
  77. package/dist/schema/EventDef.d.ts.map +1 -0
  78. package/dist/schema/EventDef.js +58 -0
  79. package/dist/schema/EventDef.js.map +1 -0
  80. package/dist/schema/EventId.d.ts +7 -2
  81. package/dist/schema/EventId.d.ts.map +1 -1
  82. package/dist/schema/EventId.js +18 -3
  83. package/dist/schema/EventId.js.map +1 -1
  84. package/dist/schema/{MutationEvent.d.ts → LiveStoreEvent.d.ts} +56 -56
  85. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  86. package/dist/schema/{MutationEvent.js → LiveStoreEvent.js} +25 -25
  87. package/dist/schema/LiveStoreEvent.js.map +1 -0
  88. package/dist/schema/client-document-def.d.ts +223 -0
  89. package/dist/schema/client-document-def.d.ts.map +1 -0
  90. package/dist/schema/client-document-def.js +170 -0
  91. package/dist/schema/client-document-def.js.map +1 -0
  92. package/dist/schema/client-document-def.test.d.ts +2 -0
  93. package/dist/schema/client-document-def.test.d.ts.map +1 -0
  94. package/dist/schema/client-document-def.test.js +201 -0
  95. package/dist/schema/client-document-def.test.js.map +1 -0
  96. package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -1
  97. package/dist/schema/events.d.ts +2 -0
  98. package/dist/schema/events.d.ts.map +1 -0
  99. package/dist/schema/events.js +2 -0
  100. package/dist/schema/events.js.map +1 -0
  101. package/dist/schema/mod.d.ts +4 -3
  102. package/dist/schema/mod.d.ts.map +1 -1
  103. package/dist/schema/mod.js +4 -3
  104. package/dist/schema/mod.js.map +1 -1
  105. package/dist/schema/schema.d.ts +26 -22
  106. package/dist/schema/schema.d.ts.map +1 -1
  107. package/dist/schema/schema.js +45 -43
  108. package/dist/schema/schema.js.map +1 -1
  109. package/dist/schema/sqlite-state.d.ts +12 -0
  110. package/dist/schema/sqlite-state.d.ts.map +1 -0
  111. package/dist/schema/sqlite-state.js +36 -0
  112. package/dist/schema/sqlite-state.js.map +1 -0
  113. package/dist/schema/system-tables.d.ts +67 -98
  114. package/dist/schema/system-tables.d.ts.map +1 -1
  115. package/dist/schema/system-tables.js +62 -48
  116. package/dist/schema/system-tables.js.map +1 -1
  117. package/dist/schema/table-def.d.ts +26 -96
  118. package/dist/schema/table-def.d.ts.map +1 -1
  119. package/dist/schema/table-def.js +14 -64
  120. package/dist/schema/table-def.js.map +1 -1
  121. package/dist/schema/view.d.ts +3 -0
  122. package/dist/schema/view.d.ts.map +1 -0
  123. package/dist/schema/view.js +3 -0
  124. package/dist/schema/view.js.map +1 -0
  125. package/dist/schema-management/common.d.ts +4 -4
  126. package/dist/schema-management/common.d.ts.map +1 -1
  127. package/dist/schema-management/migrations.d.ts.map +1 -1
  128. package/dist/schema-management/migrations.js +6 -6
  129. package/dist/schema-management/migrations.js.map +1 -1
  130. package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
  131. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  132. package/dist/schema-management/validate-mutation-defs.js +17 -17
  133. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  134. package/dist/sync/ClientSessionSyncProcessor.d.ts +7 -7
  135. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  136. package/dist/sync/ClientSessionSyncProcessor.js +33 -30
  137. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  138. package/dist/sync/next/facts.d.ts +19 -19
  139. package/dist/sync/next/facts.d.ts.map +1 -1
  140. package/dist/sync/next/facts.js +2 -2
  141. package/dist/sync/next/facts.js.map +1 -1
  142. package/dist/sync/next/history-dag-common.d.ts +3 -3
  143. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  144. package/dist/sync/next/history-dag-common.js +1 -1
  145. package/dist/sync/next/history-dag-common.js.map +1 -1
  146. package/dist/sync/next/history-dag.js +1 -1
  147. package/dist/sync/next/history-dag.js.map +1 -1
  148. package/dist/sync/next/rebase-events.d.ts +7 -7
  149. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  150. package/dist/sync/next/rebase-events.js +5 -5
  151. package/dist/sync/next/rebase-events.js.map +1 -1
  152. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  153. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  154. package/dist/sync/next/test/compact-events.test.js +71 -71
  155. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  156. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +25 -25
  157. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  158. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +60 -25
  159. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  160. package/dist/sync/next/test/mod.d.ts +1 -1
  161. package/dist/sync/next/test/mod.d.ts.map +1 -1
  162. package/dist/sync/next/test/mod.js +1 -1
  163. package/dist/sync/next/test/mod.js.map +1 -1
  164. package/dist/sync/sync.d.ts +3 -3
  165. package/dist/sync/sync.d.ts.map +1 -1
  166. package/dist/sync/syncstate.d.ts +30 -30
  167. package/dist/sync/syncstate.d.ts.map +1 -1
  168. package/dist/sync/syncstate.js +73 -40
  169. package/dist/sync/syncstate.js.map +1 -1
  170. package/dist/sync/syncstate.test.js +175 -184
  171. package/dist/sync/syncstate.test.js.map +1 -1
  172. package/dist/sync/validate-push-payload.d.ts +2 -2
  173. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  174. package/dist/sync/validate-push-payload.js.map +1 -1
  175. package/dist/version.d.ts +1 -1
  176. package/dist/version.js +1 -1
  177. package/package.json +3 -3
  178. package/src/__tests__/fixture.ts +36 -15
  179. package/src/adapter-types.ts +33 -13
  180. package/src/debug-info.ts +1 -0
  181. package/src/devtools/devtools-messages-leader.ts +13 -13
  182. package/src/index.ts +2 -5
  183. package/src/leader-thread/LeaderSyncProcessor.ts +210 -138
  184. package/src/leader-thread/{apply-mutation.ts → apply-event.ts} +61 -61
  185. package/src/leader-thread/eventlog.ts +199 -0
  186. package/src/leader-thread/leader-worker-devtools.ts +22 -19
  187. package/src/leader-thread/make-leader-thread-layer.ts +51 -29
  188. package/src/leader-thread/mod.ts +1 -1
  189. package/src/leader-thread/recreate-db.ts +6 -8
  190. package/src/leader-thread/types.ts +15 -16
  191. package/src/materializer-helper.ts +110 -0
  192. package/src/query-builder/api.ts +77 -103
  193. package/src/query-builder/astToSql.ts +68 -39
  194. package/src/query-builder/impl.test.ts +239 -42
  195. package/src/query-builder/impl.ts +72 -56
  196. package/src/{rehydrate-from-mutationlog.ts → rehydrate-from-eventlog.ts} +35 -38
  197. package/src/schema/EventDef.ts +216 -0
  198. package/src/schema/EventId.ts +23 -4
  199. package/src/schema/{MutationEvent.ts → LiveStoreEvent.ts} +68 -69
  200. package/src/schema/client-document-def.test.ts +239 -0
  201. package/src/schema/client-document-def.ts +444 -0
  202. package/src/schema/db-schema/dsl/mod.ts +0 -1
  203. package/src/schema/events.ts +1 -0
  204. package/src/schema/mod.ts +4 -3
  205. package/src/schema/schema.ts +78 -68
  206. package/src/schema/sqlite-state.ts +62 -0
  207. package/src/schema/system-tables.ts +42 -53
  208. package/src/schema/table-def.ts +51 -209
  209. package/src/schema/view.ts +2 -0
  210. package/src/schema-management/common.ts +4 -4
  211. package/src/schema-management/migrations.ts +8 -9
  212. package/src/schema-management/validate-mutation-defs.ts +22 -24
  213. package/src/sync/ClientSessionSyncProcessor.ts +41 -36
  214. package/src/sync/next/facts.ts +31 -32
  215. package/src/sync/next/history-dag-common.ts +4 -4
  216. package/src/sync/next/history-dag.ts +1 -1
  217. package/src/sync/next/rebase-events.ts +13 -13
  218. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  219. package/src/sync/next/test/compact-events.test.ts +73 -73
  220. package/src/sync/next/test/event-fixtures.ts +219 -0
  221. package/src/sync/next/test/mod.ts +1 -1
  222. package/src/sync/sync.ts +3 -3
  223. package/src/sync/syncstate.test.ts +180 -189
  224. package/src/sync/syncstate.ts +162 -100
  225. package/src/sync/validate-push-payload.ts +2 -2
  226. package/src/version.ts +1 -1
  227. package/tsconfig.json +1 -0
  228. package/dist/derived-mutations.d.ts +0 -109
  229. package/dist/derived-mutations.d.ts.map +0 -1
  230. package/dist/derived-mutations.js +0 -54
  231. package/dist/derived-mutations.js.map +0 -1
  232. package/dist/derived-mutations.test.d.ts +0 -2
  233. package/dist/derived-mutations.test.d.ts.map +0 -1
  234. package/dist/derived-mutations.test.js +0 -93
  235. package/dist/derived-mutations.test.js.map +0 -1
  236. package/dist/init-singleton-tables.d.ts +0 -4
  237. package/dist/init-singleton-tables.d.ts.map +0 -1
  238. package/dist/init-singleton-tables.js +0 -16
  239. package/dist/init-singleton-tables.js.map +0 -1
  240. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  241. package/dist/leader-thread/apply-mutation.js.map +0 -1
  242. package/dist/leader-thread/mutationlog.d.ts +0 -27
  243. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  244. package/dist/leader-thread/mutationlog.js +0 -124
  245. package/dist/leader-thread/mutationlog.js.map +0 -1
  246. package/dist/mutation.d.ts +0 -20
  247. package/dist/mutation.d.ts.map +0 -1
  248. package/dist/mutation.js +0 -68
  249. package/dist/mutation.js.map +0 -1
  250. package/dist/query-info.d.ts +0 -41
  251. package/dist/query-info.d.ts.map +0 -1
  252. package/dist/query-info.js +0 -7
  253. package/dist/query-info.js.map +0 -1
  254. package/dist/rehydrate-from-mutationlog.d.ts +0 -15
  255. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  256. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  257. package/dist/schema/MutationEvent.d.ts.map +0 -1
  258. package/dist/schema/MutationEvent.js.map +0 -1
  259. package/dist/schema/mutations.d.ts +0 -115
  260. package/dist/schema/mutations.d.ts.map +0 -1
  261. package/dist/schema/mutations.js +0 -42
  262. package/dist/schema/mutations.js.map +0 -1
  263. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  264. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  265. package/src/derived-mutations.test.ts +0 -101
  266. package/src/derived-mutations.ts +0 -170
  267. package/src/init-singleton-tables.ts +0 -24
  268. package/src/leader-thread/mutationlog.ts +0 -202
  269. package/src/mutation.ts +0 -108
  270. package/src/query-info.ts +0 -83
  271. package/src/schema/mutations.ts +0 -193
  272. package/src/sync/next/test/mutation-fixtures.ts +0 -228
@@ -1,8 +1,8 @@
1
- import { casesHandled, shouldNeverHappen } from '@livestore/utils';
1
+ import { casesHandled, LS_DEV, shouldNeverHappen } from '@livestore/utils';
2
2
  import { Match, ReadonlyArray, Schema } from '@livestore/utils/effect';
3
3
  import { UnexpectedError } from '../adapter-types.js';
4
4
  import * as EventId from '../schema/EventId.js';
5
- import * as MutationEvent from '../schema/MutationEvent.js';
5
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.js';
6
6
  /**
7
7
  * SyncState represents the current sync state of a sync node relative to an upstream node.
8
8
  * Events flow from local to upstream, with each state maintaining its own event head.
@@ -41,7 +41,7 @@ import * as MutationEvent from '../schema/MutationEvent.js';
41
41
  * handling cases such as upstream rebase, advance and local push.
42
42
  */
43
43
  export class SyncState extends Schema.Class('SyncState')({
44
- pending: Schema.Array(MutationEvent.EncodedWithMeta),
44
+ pending: Schema.Array(LiveStoreEvent.EncodedWithMeta),
45
45
  /** What this node expects the next upstream node to have as its own local head */
46
46
  upstreamHead: EventId.EventId,
47
47
  /** Equivalent to `pending.at(-1)?.id` if there are pending events */
@@ -58,17 +58,17 @@ export class SyncState extends Schema.Class('SyncState')({
58
58
  */
59
59
  export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
60
60
  /** Events which need to be rolled back */
61
- rollbackEvents: Schema.Array(MutationEvent.EncodedWithMeta),
61
+ rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
62
62
  /** Events which need to be applied after the rollback (already rebased by the upstream node) */
63
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
63
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
64
64
  }) {
65
65
  }
66
66
  export class PayloadUpstreamAdvance extends Schema.TaggedStruct('upstream-advance', {
67
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
67
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
68
68
  }) {
69
69
  }
70
70
  export class PayloadLocalPush extends Schema.TaggedStruct('local-push', {
71
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
71
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
72
72
  }) {
73
73
  }
74
74
  export class Payload extends Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance, PayloadLocalPush) {
@@ -101,9 +101,9 @@ export class MergeContext extends Schema.Class('MergeContext')({
101
101
  export class MergeResultAdvance extends Schema.Class('MergeResultAdvance')({
102
102
  _tag: Schema.Literal('advance'),
103
103
  newSyncState: SyncState,
104
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
104
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
105
105
  /** Events which were previously pending but are now confirmed */
106
- confirmedEvents: Schema.Array(MutationEvent.EncodedWithMeta),
106
+ confirmedEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
107
107
  mergeContext: MergeContext,
108
108
  }) {
109
109
  toJSON = () => {
@@ -119,9 +119,9 @@ export class MergeResultAdvance extends Schema.Class('MergeResultAdvance')({
119
119
  export class MergeResultRebase extends Schema.Class('MergeResultRebase')({
120
120
  _tag: Schema.Literal('rebase'),
121
121
  newSyncState: SyncState,
122
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
122
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
123
123
  /** Events which need to be rolled back */
124
- rollbackEvents: Schema.Array(MutationEvent.EncodedWithMeta),
124
+ rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
125
125
  mergeContext: MergeContext,
126
126
  }) {
127
127
  toJSON = () => {
@@ -155,10 +155,15 @@ export class MergeResultUnexpectedError extends Schema.Class('MergeResultUnexpec
155
155
  }
156
156
  export class MergeResult extends Schema.Union(MergeResultAdvance, MergeResultRebase, MergeResultReject, MergeResultUnexpectedError) {
157
157
  }
158
- const unexpectedError = (cause) => MergeResultUnexpectedError.make({
159
- _tag: 'unexpected-error',
160
- cause: new UnexpectedError({ cause }),
161
- });
158
+ const unexpectedError = (cause) => {
159
+ if (LS_DEV) {
160
+ debugger;
161
+ }
162
+ return MergeResultUnexpectedError.make({
163
+ _tag: 'unexpected-error',
164
+ cause: new UnexpectedError({ cause }),
165
+ });
166
+ };
162
167
  // TODO Idea: call merge recursively through hierarchy levels
163
168
  /*
164
169
  Idea: have a map that maps from `globalEventId` to Array<ClientEvents>
@@ -168,6 +173,7 @@ TODO: possibly even keep the client events in a separate table in the client lea
168
173
  */
169
174
  export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreClientEvents = false, }) => {
170
175
  validateSyncState(syncState);
176
+ validatePayload(payload);
171
177
  const mergeContext = MergeContext.make({ payload, syncState });
172
178
  switch (payload._tag) {
173
179
  case 'upstream-rebase': {
@@ -180,7 +186,7 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
180
186
  baseEventId: newUpstreamHead,
181
187
  isClientEvent,
182
188
  });
183
- return MergeResultRebase.make({
189
+ return validateMergeResult(MergeResultRebase.make({
184
190
  _tag: 'rebase',
185
191
  newSyncState: new SyncState({
186
192
  pending: rebasedPending,
@@ -190,12 +196,12 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
190
196
  newEvents: [...payload.newEvents, ...rebasedPending],
191
197
  rollbackEvents,
192
198
  mergeContext,
193
- });
199
+ }));
194
200
  }
195
201
  // #region upstream-advance
196
202
  case 'upstream-advance': {
197
203
  if (payload.newEvents.length === 0) {
198
- return MergeResultAdvance.make({
204
+ return validateMergeResult(MergeResultAdvance.make({
199
205
  _tag: 'advance',
200
206
  newSyncState: new SyncState({
201
207
  pending: syncState.pending,
@@ -205,7 +211,7 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
205
211
  newEvents: [],
206
212
  confirmedEvents: [],
207
213
  mergeContext: mergeContext,
208
- });
214
+ }));
209
215
  }
210
216
  // Validate that newEvents are sorted in ascending order by eventId
211
217
  for (let i = 1; i < payload.newEvents.length; i++) {
@@ -218,14 +224,6 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
218
224
  EventId.isEqual(syncState.upstreamHead, payload.newEvents[0].id)) {
219
225
  return unexpectedError(`Incoming events must be greater than upstream head. Expected greater than: ${EventId.toString(syncState.upstreamHead)}. Received: [${payload.newEvents.map((e) => EventId.toString(e.id)).join(', ')}]`);
220
226
  }
221
- // Validate that the parent id of the first incoming event is known
222
- const knownEventGlobalIds = [...syncState.pending].flatMap((e) => [e.id.global, e.parentId.global]);
223
- knownEventGlobalIds.push(syncState.upstreamHead.global);
224
- const firstNewEvent = payload.newEvents[0];
225
- const hasUnknownParentId = knownEventGlobalIds.includes(firstNewEvent.parentId.global) === false;
226
- if (hasUnknownParentId) {
227
- return unexpectedError(`Incoming events must have a known parent id. Received: [${payload.newEvents.map((e) => EventId.toString(e.id)).join(', ')}]`);
228
- }
229
227
  const newUpstreamHead = payload.newEvents.at(-1).id;
230
228
  const divergentPendingIndex = findDivergencePoint({
231
229
  existingEvents: syncState.pending,
@@ -255,17 +253,17 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
255
253
  }
256
254
  return isEqualEvent(pendingEvent, newEvent) === false;
257
255
  });
258
- return MergeResultAdvance.make({
256
+ return validateMergeResult(MergeResultAdvance.make({
259
257
  _tag: 'advance',
260
258
  newSyncState: new SyncState({
261
259
  pending: pendingRemaining,
262
260
  upstreamHead: newUpstreamHead,
263
- localHead: pendingRemaining.at(-1)?.id ?? newUpstreamHead,
261
+ localHead: pendingRemaining.at(-1)?.id ?? EventId.max(syncState.localHead, newUpstreamHead),
264
262
  }),
265
263
  newEvents,
266
264
  confirmedEvents: pendingMatching,
267
265
  mergeContext: mergeContext,
268
- });
266
+ }));
269
267
  }
270
268
  else {
271
269
  const divergentPending = syncState.pending.slice(divergentPendingIndex);
@@ -281,7 +279,7 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
281
279
  isClientEvent,
282
280
  ignoreClientEvents,
283
281
  });
284
- return MergeResultRebase.make({
282
+ return validateMergeResult(MergeResultRebase.make({
285
283
  _tag: 'rebase',
286
284
  newSyncState: new SyncState({
287
285
  pending: rebasedPending,
@@ -291,33 +289,33 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
291
289
  newEvents: [...payload.newEvents.slice(divergentNewEventsIndex), ...rebasedPending],
292
290
  rollbackEvents: divergentPending,
293
291
  mergeContext,
294
- });
292
+ }));
295
293
  }
296
294
  }
297
295
  // #endregion
298
296
  // This is the same as what's running in the sync backend
299
297
  case 'local-push': {
300
298
  if (payload.newEvents.length === 0) {
301
- return MergeResultAdvance.make({
299
+ return validateMergeResult(MergeResultAdvance.make({
302
300
  _tag: 'advance',
303
301
  newSyncState: syncState,
304
302
  newEvents: [],
305
303
  confirmedEvents: [],
306
304
  mergeContext: mergeContext,
307
- });
305
+ }));
308
306
  }
309
307
  const newEventsFirst = payload.newEvents.at(0);
310
308
  const invalidEventId = EventId.isGreaterThan(newEventsFirst.id, syncState.localHead) === false;
311
309
  if (invalidEventId) {
312
310
  const expectedMinimumId = EventId.nextPair(syncState.localHead, true).id;
313
- return MergeResultReject.make({
311
+ return validateMergeResult(MergeResultReject.make({
314
312
  _tag: 'reject',
315
313
  expectedMinimumId,
316
314
  mergeContext,
317
- });
315
+ }));
318
316
  }
319
317
  else {
320
- return MergeResultAdvance.make({
318
+ return validateMergeResult(MergeResultAdvance.make({
321
319
  _tag: 'advance',
322
320
  newSyncState: new SyncState({
323
321
  pending: [...syncState.pending, ...payload.newEvents],
@@ -327,7 +325,7 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
327
325
  newEvents: payload.newEvents,
328
326
  confirmedEvents: [],
329
327
  mergeContext: mergeContext,
330
- });
328
+ }));
331
329
  }
332
330
  }
333
331
  default: {
@@ -378,14 +376,21 @@ const rebaseEvents = ({ events, baseEventId, isClientEvent, }) => {
378
376
  * can process more efficiently which avoids push-threshing
379
377
  */
380
378
  const _flattenMergeResults = (_updateResults) => { };
379
+ const validatePayload = (payload) => {
380
+ for (let i = 1; i < payload.newEvents.length; i++) {
381
+ if (EventId.isGreaterThanOrEqual(payload.newEvents[i - 1].id, payload.newEvents[i].id)) {
382
+ return unexpectedError(`Events must be ordered in monotonically ascending order by eventId. Received: [${payload.newEvents.map((e) => EventId.toString(e.id)).join(', ')}]`);
383
+ }
384
+ }
385
+ };
381
386
  const validateSyncState = (syncState) => {
382
387
  for (let i = 0; i < syncState.pending.length; i++) {
383
388
  const event = syncState.pending[i];
384
389
  const nextEvent = syncState.pending[i + 1];
385
390
  if (nextEvent === undefined)
386
391
  break; // Reached end of chain
387
- if (EventId.isGreaterThan(event.id, nextEvent.id)) {
388
- shouldNeverHappen('Events must be sorted in ascending order by eventId', {
392
+ if (EventId.isGreaterThanOrEqual(event.id, nextEvent.id)) {
393
+ shouldNeverHappen(`Events must be ordered in monotonically ascending order by eventId. Received: [${syncState.pending.map((e) => EventId.toString(e.id)).join(', ')}]`, {
389
394
  event,
390
395
  nextEvent,
391
396
  });
@@ -411,4 +416,32 @@ const validateSyncState = (syncState) => {
411
416
  }
412
417
  }
413
418
  };
419
+ const validateMergeResult = (mergeResult) => {
420
+ if (mergeResult._tag === 'unexpected-error' || mergeResult._tag === 'reject')
421
+ return mergeResult;
422
+ validateSyncState(mergeResult.newSyncState);
423
+ // Ensure local head is always greater than or equal to upstream head
424
+ if (EventId.isGreaterThan(mergeResult.newSyncState.upstreamHead, mergeResult.newSyncState.localHead)) {
425
+ shouldNeverHappen('Local head must be greater than or equal to upstream head', {
426
+ localHead: mergeResult.newSyncState.localHead,
427
+ upstreamHead: mergeResult.newSyncState.upstreamHead,
428
+ });
429
+ }
430
+ // Ensure new local head is greater than or equal to the previous local head
431
+ if (EventId.isGreaterThanOrEqual(mergeResult.newSyncState.localHead, mergeResult.mergeContext.syncState.localHead) ===
432
+ false) {
433
+ shouldNeverHappen('New local head must be greater than or equal to the previous local head', {
434
+ localHead: mergeResult.newSyncState.localHead,
435
+ previousLocalHead: mergeResult.mergeContext.syncState.localHead,
436
+ });
437
+ }
438
+ // Ensure new upstream head is greater than or equal to the previous upstream head
439
+ if (EventId.isGreaterThanOrEqual(mergeResult.newSyncState.upstreamHead, mergeResult.mergeContext.syncState.upstreamHead) === false) {
440
+ shouldNeverHappen('New upstream head must be greater than or equal to the previous upstream head', {
441
+ upstreamHead: mergeResult.newSyncState.upstreamHead,
442
+ previousUpstreamHead: mergeResult.mergeContext.syncState.upstreamHead,
443
+ });
444
+ }
445
+ return mergeResult;
446
+ };
414
447
  //# sourceMappingURL=syncstate.js.map
@@ -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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"}