@livestore/common 0.4.0-dev.17 → 0.4.0-dev.19

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 (290) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +10 -10
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/adapter-types.d.ts +5 -5
  5. package/dist/adapter-types.d.ts.map +1 -1
  6. package/dist/devtools/devtools-messages-client-session.d.ts +28 -23
  7. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  8. package/dist/devtools/devtools-messages-client-session.js +2 -2
  9. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  10. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  11. package/dist/devtools/devtools-messages-leader.d.ts +33 -28
  12. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  13. package/dist/devtools/devtools-messages-leader.js +8 -8
  14. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  15. package/dist/errors.d.ts +6 -6
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +7 -7
  18. package/dist/errors.js.map +1 -1
  19. package/dist/leader-thread/LeaderSyncProcessor.d.ts +2 -2
  20. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  21. package/dist/leader-thread/LeaderSyncProcessor.js +28 -28
  22. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  23. package/dist/leader-thread/eventlog.d.ts +13 -13
  24. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  25. package/dist/leader-thread/eventlog.js +12 -11
  26. package/dist/leader-thread/eventlog.js.map +1 -1
  27. package/dist/leader-thread/leader-worker-devtools.d.ts +2 -2
  28. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  29. package/dist/leader-thread/leader-worker-devtools.js +3 -3
  30. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  31. package/dist/leader-thread/make-leader-thread-layer.d.ts +2 -2
  32. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  33. package/dist/leader-thread/make-leader-thread-layer.js +10 -8
  34. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  35. package/dist/leader-thread/materialize-event.d.ts +1 -1
  36. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  37. package/dist/leader-thread/materialize-event.js +2 -2
  38. package/dist/leader-thread/materialize-event.js.map +1 -1
  39. package/dist/leader-thread/recreate-db.d.ts +2 -2
  40. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  41. package/dist/leader-thread/recreate-db.js +5 -5
  42. package/dist/leader-thread/recreate-db.js.map +1 -1
  43. package/dist/leader-thread/shutdown-channel.d.ts +2 -2
  44. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  45. package/dist/leader-thread/shutdown-channel.js +2 -2
  46. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  47. package/dist/leader-thread/types.d.ts +15 -15
  48. package/dist/leader-thread/types.d.ts.map +1 -1
  49. package/dist/make-client-session.d.ts +2 -2
  50. package/dist/make-client-session.d.ts.map +1 -1
  51. package/dist/materializer-helper.d.ts +5 -5
  52. package/dist/materializer-helper.d.ts.map +1 -1
  53. package/dist/materializer-helper.js.map +1 -1
  54. package/dist/rematerialize-from-eventlog.d.ts +2 -2
  55. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  56. package/dist/rematerialize-from-eventlog.js +6 -6
  57. package/dist/rematerialize-from-eventlog.js.map +1 -1
  58. package/dist/schema/EventDef/define.d.ts +147 -0
  59. package/dist/schema/EventDef/define.d.ts.map +1 -0
  60. package/dist/schema/EventDef/define.js +139 -0
  61. package/dist/schema/EventDef/define.js.map +1 -0
  62. package/dist/schema/EventDef/event-def.d.ts +106 -0
  63. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  64. package/dist/schema/EventDef/event-def.js +2 -0
  65. package/dist/schema/EventDef/event-def.js.map +1 -0
  66. package/dist/schema/EventDef/facts.d.ts +118 -0
  67. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  68. package/dist/schema/EventDef/facts.js +53 -0
  69. package/dist/schema/EventDef/facts.js.map +1 -0
  70. package/dist/schema/EventDef/materializer.d.ts +155 -0
  71. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  72. package/dist/schema/EventDef/materializer.js +83 -0
  73. package/dist/schema/EventDef/materializer.js.map +1 -0
  74. package/dist/schema/EventDef/mod.d.ts +5 -0
  75. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  76. package/dist/schema/EventDef/mod.js +5 -0
  77. package/dist/schema/EventDef/mod.js.map +1 -0
  78. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  79. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  80. package/dist/schema/{EventSequenceNumber.js → EventSequenceNumber/client.js} +86 -39
  81. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  82. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  83. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  84. package/dist/schema/EventSequenceNumber/global.js +14 -0
  85. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  86. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  87. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  88. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  89. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  90. package/dist/schema/EventSequenceNumber.test.js +41 -41
  91. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  92. package/dist/schema/{LiveStoreEvent.d.ts → LiveStoreEvent/client.d.ts} +84 -101
  93. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  94. package/dist/schema/{LiveStoreEvent.js → LiveStoreEvent/client.js} +69 -52
  95. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  96. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  97. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  98. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  99. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  100. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  101. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  102. package/dist/schema/LiveStoreEvent/global.js +31 -0
  103. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  104. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  105. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  106. package/dist/schema/LiveStoreEvent/input.js +26 -0
  107. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  108. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  109. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  110. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  111. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  112. package/dist/schema/events.d.ts +1 -1
  113. package/dist/schema/events.d.ts.map +1 -1
  114. package/dist/schema/events.js +1 -1
  115. package/dist/schema/events.js.map +1 -1
  116. package/dist/schema/mod.d.ts +3 -3
  117. package/dist/schema/mod.d.ts.map +1 -1
  118. package/dist/schema/mod.js +3 -3
  119. package/dist/schema/mod.js.map +1 -1
  120. package/dist/schema/schema.d.ts +1 -1
  121. package/dist/schema/schema.d.ts.map +1 -1
  122. package/dist/schema/state/sqlite/client-document-def.d.ts +1 -1
  123. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  124. package/dist/schema/state/sqlite/client-document-def.js +2 -2
  125. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  126. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  127. package/dist/schema/state/sqlite/column-def.js +60 -28
  128. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  129. package/dist/schema/state/sqlite/column-def.test.js +12 -1
  130. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  131. package/dist/schema/state/sqlite/mod.d.ts +2 -2
  132. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  133. package/dist/schema/state/sqlite/mod.js +1 -1
  134. package/dist/schema/state/sqlite/mod.js.map +1 -1
  135. package/dist/schema/state/sqlite/query-builder/api.d.ts +12 -8
  136. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  137. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  138. package/dist/schema/state/sqlite/query-builder/astToSql.js +18 -11
  139. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  140. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  141. package/dist/schema/state/sqlite/query-builder/impl.js +0 -1
  142. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  143. package/dist/schema/state/sqlite/query-builder/impl.test.js +119 -90
  144. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  145. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +5 -5
  146. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -1
  147. package/dist/schema/state/sqlite/system-tables/state-tables.js +3 -3
  148. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -1
  149. package/dist/schema/unknown-events.d.ts +3 -3
  150. package/dist/schema/unknown-events.d.ts.map +1 -1
  151. package/dist/schema-management/migrations.d.ts +2 -2
  152. package/dist/schema-management/migrations.d.ts.map +1 -1
  153. package/dist/schema-management/migrations.js.map +1 -1
  154. package/dist/schema-management/validate-schema.d.ts +3 -3
  155. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  156. package/dist/schema-management/validate-schema.js +2 -2
  157. package/dist/schema-management/validate-schema.js.map +1 -1
  158. package/dist/sqlite-types.d.ts +3 -3
  159. package/dist/sqlite-types.d.ts.map +1 -1
  160. package/dist/sync/ClientSessionSyncProcessor.d.ts +5 -5
  161. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  162. package/dist/sync/ClientSessionSyncProcessor.js +12 -12
  163. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  164. package/dist/sync/errors.d.ts +9 -4
  165. package/dist/sync/errors.d.ts.map +1 -1
  166. package/dist/sync/errors.js +6 -6
  167. package/dist/sync/errors.js.map +1 -1
  168. package/dist/sync/mock-sync-backend.d.ts +6 -6
  169. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  170. package/dist/sync/mock-sync-backend.js +4 -4
  171. package/dist/sync/mock-sync-backend.js.map +1 -1
  172. package/dist/sync/next/compact-events.js +2 -2
  173. package/dist/sync/next/compact-events.js.map +1 -1
  174. package/dist/sync/next/facts.d.ts +5 -5
  175. package/dist/sync/next/facts.d.ts.map +1 -1
  176. package/dist/sync/next/facts.js.map +1 -1
  177. package/dist/sync/next/history-dag-common.d.ts +5 -5
  178. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  179. package/dist/sync/next/history-dag-common.js +5 -5
  180. package/dist/sync/next/history-dag-common.js.map +1 -1
  181. package/dist/sync/next/history-dag.d.ts.map +1 -1
  182. package/dist/sync/next/history-dag.js +8 -8
  183. package/dist/sync/next/history-dag.js.map +1 -1
  184. package/dist/sync/next/rebase-events.d.ts +5 -5
  185. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  186. package/dist/sync/next/rebase-events.js +5 -5
  187. package/dist/sync/next/rebase-events.js.map +1 -1
  188. package/dist/sync/next/test/event-fixtures.d.ts +2 -2
  189. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  190. package/dist/sync/next/test/event-fixtures.js +9 -9
  191. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  192. package/dist/sync/sync-backend-kv.d.ts +3 -3
  193. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  194. package/dist/sync/sync-backend-kv.js +3 -3
  195. package/dist/sync/sync-backend-kv.js.map +1 -1
  196. package/dist/sync/sync-backend.d.ts +9 -9
  197. package/dist/sync/sync-backend.d.ts.map +1 -1
  198. package/dist/sync/syncstate.d.ts +55 -42
  199. package/dist/sync/syncstate.d.ts.map +1 -1
  200. package/dist/sync/syncstate.js +42 -42
  201. package/dist/sync/syncstate.js.map +1 -1
  202. package/dist/sync/syncstate.test.js +40 -40
  203. package/dist/sync/syncstate.test.js.map +1 -1
  204. package/dist/sync/validate-push-payload.d.ts +1 -1
  205. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  206. package/dist/sync/validate-push-payload.js +2 -2
  207. package/dist/sync/validate-push-payload.js.map +1 -1
  208. package/dist/testing/event-factory.d.ts +3 -3
  209. package/dist/testing/event-factory.d.ts.map +1 -1
  210. package/dist/testing/event-factory.js +5 -7
  211. package/dist/testing/event-factory.js.map +1 -1
  212. package/dist/version.d.ts +1 -1
  213. package/dist/version.js +1 -1
  214. package/package.json +4 -4
  215. package/src/ClientSessionLeaderThreadProxy.ts +10 -10
  216. package/src/adapter-types.ts +5 -5
  217. package/src/devtools/devtools-messages-client-session.ts +2 -2
  218. package/src/devtools/devtools-messages-leader.ts +8 -8
  219. package/src/errors.ts +11 -13
  220. package/src/leader-thread/LeaderSyncProcessor.ts +54 -56
  221. package/src/leader-thread/eventlog.ts +21 -26
  222. package/src/leader-thread/leader-worker-devtools.ts +3 -3
  223. package/src/leader-thread/make-leader-thread-layer.ts +12 -10
  224. package/src/leader-thread/materialize-event.ts +3 -3
  225. package/src/leader-thread/recreate-db.ts +6 -6
  226. package/src/leader-thread/shutdown-channel.ts +2 -2
  227. package/src/leader-thread/types.ts +15 -15
  228. package/src/make-client-session.ts +2 -2
  229. package/src/materializer-helper.ts +5 -5
  230. package/src/rematerialize-from-eventlog.ts +6 -6
  231. package/src/schema/EventDef/define.ts +201 -0
  232. package/src/schema/EventDef/event-def.ts +120 -0
  233. package/src/schema/EventDef/facts.ts +135 -0
  234. package/src/schema/EventDef/materializer.ts +172 -0
  235. package/src/schema/EventDef/mod.ts +4 -0
  236. package/src/schema/EventSequenceNumber/client.ts +257 -0
  237. package/src/schema/EventSequenceNumber/global.ts +19 -0
  238. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  239. package/src/schema/EventSequenceNumber.test.ts +68 -50
  240. package/src/schema/LiveStoreEvent/client.ts +221 -0
  241. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  242. package/src/schema/LiveStoreEvent/global.ts +45 -0
  243. package/src/schema/LiveStoreEvent/input.ts +63 -0
  244. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  245. package/src/schema/events.ts +1 -1
  246. package/src/schema/mod.ts +3 -3
  247. package/src/schema/schema.ts +1 -1
  248. package/src/schema/state/sqlite/client-document-def.test.ts +2 -2
  249. package/src/schema/state/sqlite/client-document-def.ts +3 -3
  250. package/src/schema/state/sqlite/column-def.test.ts +18 -1
  251. package/src/schema/state/sqlite/column-def.ts +73 -30
  252. package/src/schema/state/sqlite/mod.ts +2 -2
  253. package/src/schema/state/sqlite/query-builder/api.ts +12 -8
  254. package/src/schema/state/sqlite/query-builder/astToSql.ts +20 -11
  255. package/src/schema/state/sqlite/query-builder/impl.test.ts +122 -90
  256. package/src/schema/state/sqlite/query-builder/impl.ts +0 -1
  257. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +5 -5
  258. package/src/schema/state/sqlite/system-tables/state-tables.ts +3 -3
  259. package/src/schema/unknown-events.ts +3 -3
  260. package/src/schema-management/migrations.ts +2 -2
  261. package/src/schema-management/validate-schema.ts +3 -3
  262. package/src/sqlite-types.ts +3 -3
  263. package/src/sync/ClientSessionSyncProcessor.ts +17 -17
  264. package/src/sync/errors.ts +6 -6
  265. package/src/sync/mock-sync-backend.ts +16 -16
  266. package/src/sync/next/compact-events.ts +2 -2
  267. package/src/sync/next/facts.ts +6 -6
  268. package/src/sync/next/history-dag-common.ts +8 -8
  269. package/src/sync/next/history-dag.ts +14 -10
  270. package/src/sync/next/rebase-events.ts +11 -11
  271. package/src/sync/next/test/event-fixtures.ts +11 -11
  272. package/src/sync/sync-backend-kv.ts +3 -3
  273. package/src/sync/sync-backend.ts +9 -9
  274. package/src/sync/syncstate.test.ts +46 -46
  275. package/src/sync/syncstate.ts +59 -55
  276. package/src/sync/validate-push-payload.ts +4 -4
  277. package/src/testing/event-factory.ts +10 -12
  278. package/src/version.ts +1 -1
  279. package/dist/schema/EventDef.d.ts +0 -126
  280. package/dist/schema/EventDef.d.ts.map +0 -1
  281. package/dist/schema/EventDef.js +0 -46
  282. package/dist/schema/EventDef.js.map +0 -1
  283. package/dist/schema/EventSequenceNumber.d.ts +0 -89
  284. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  285. package/dist/schema/EventSequenceNumber.js.map +0 -1
  286. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  287. package/dist/schema/LiveStoreEvent.js.map +0 -1
  288. package/src/schema/EventDef.ts +0 -222
  289. package/src/schema/EventSequenceNumber.ts +0 -208
  290. package/src/schema/LiveStoreEvent.ts +0 -286
@@ -52,8 +52,8 @@ export class SyncHeadUnsubscribe extends LSDClientSessionReqResMessage('LSD.Clie
52
52
  subscriptionId: Schema.String,
53
53
  }) {}
54
54
  export class SyncHeadRes extends LSDClientSessionReqResMessage('LSD.ClientSession.SyncHeadRes', {
55
- local: EventSequenceNumber.EventSequenceNumber,
56
- upstream: EventSequenceNumber.EventSequenceNumber,
55
+ local: EventSequenceNumber.Client.Composite,
56
+ upstream: EventSequenceNumber.Client.Composite,
57
57
  subscriptionId: Schema.String,
58
58
  }) {}
59
59
 
@@ -1,6 +1,6 @@
1
1
  import { Schema, Transferable } from '@livestore/utils/effect'
2
2
 
3
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
3
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
4
4
  import { EventSequenceNumber } from '../schema/mod.ts'
5
5
  import * as SyncState from '../sync/syncstate.ts'
6
6
  import { LeaderReqResMessage, LSDMessage, LSDReqResMessage, NetworkStatus } from './devtools-messages-common.ts'
@@ -51,7 +51,7 @@ export class SyncHistoryUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHis
51
51
  subscriptionId: Schema.String,
52
52
  }) {}
53
53
  export class SyncHistoryRes extends LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
54
- eventEncoded: LiveStoreEvent.AnyEncodedGlobal,
54
+ eventEncoded: LiveStoreEvent.Global.Encoded,
55
55
  metadata: Schema.Option(Schema.JsonValue),
56
56
  subscriptionId: Schema.String,
57
57
  }) {}
@@ -63,8 +63,8 @@ export class SyncHeadUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHeadUn
63
63
  subscriptionId: Schema.String,
64
64
  }) {}
65
65
  export class SyncHeadRes extends LSDReqResMessage('LSD.Leader.SyncHeadRes', {
66
- local: EventSequenceNumber.EventSequenceNumber,
67
- upstream: EventSequenceNumber.EventSequenceNumber,
66
+ local: EventSequenceNumber.Client.Composite,
67
+ upstream: EventSequenceNumber.Client.Composite,
68
68
  subscriptionId: Schema.String,
69
69
  }) {}
70
70
 
@@ -83,7 +83,7 @@ export const LoadDatabaseFile = LeaderReqResMessage('LSD.Leader.LoadDatabaseFile
83
83
  cause: Schema.Union(
84
84
  Schema.TaggedStruct('unsupported-file', {}),
85
85
  Schema.TaggedStruct('unsupported-database', {}),
86
- Schema.TaggedStruct('unexpected-error', { cause: Schema.Defect }),
86
+ Schema.TaggedStruct('unknown-error', { cause: Schema.Defect }),
87
87
  ),
88
88
  },
89
89
  })
@@ -95,7 +95,7 @@ export class SyncPull extends LSDMessage('LSD.Leader.SyncPull', {
95
95
 
96
96
  // TODO refactor this to use push/pull semantics
97
97
  export class CommitEventReq extends LSDReqResMessage('LSD.Leader.CommitEventReq', {
98
- eventEncoded: LiveStoreEvent.PartialAnyEncoded,
98
+ eventEncoded: LiveStoreEvent.Input.Encoded,
99
99
  }) {}
100
100
 
101
101
  export class CommitEventRes extends LSDReqResMessage('LSD.Leader.CommitEventRes', {}) {}
@@ -133,7 +133,7 @@ export const ResetAllData = LeaderReqResMessage('LSD.Leader.ResetAllData', {
133
133
  // liveStoreVersion,
134
134
  // },
135
135
  // success: DatabaseFileInfo,
136
- // failure: UnexpectedError,
136
+ // failure: UnknownError,
137
137
  // }) {}
138
138
 
139
139
  // export class NetworkStatus_ extends Schema.TaggedRequest<NetworkStatus_>()('LSD.Leader.NetworkStatus', {
@@ -142,7 +142,7 @@ export const ResetAllData = LeaderReqResMessage('LSD.Leader.ResetAllData', {
142
142
  // liveStoreVersion,
143
143
  // },
144
144
  // success: NetworkStatus,
145
- // failure: UnexpectedError,
145
+ // failure: UnknownError,
146
146
  // }) {}
147
147
 
148
148
  // export const MessageToApp_ = Schema.Union(DatabaseFileInfo_, NetworkStatus_)
package/src/errors.ts CHANGED
@@ -1,31 +1,29 @@
1
1
  import { Cause, Effect, Layer, Schema, Stream } from '@livestore/utils/effect'
2
2
 
3
- import * as LiveStoreEvent from './schema/LiveStoreEvent.ts'
3
+ import * as LiveStoreEvent from './schema/LiveStoreEvent/mod.ts'
4
4
 
5
- export class UnexpectedError extends Schema.TaggedError<UnexpectedError>()('LiveStore.UnexpectedError', {
5
+ export class UnknownError extends Schema.TaggedError<UnknownError>()('LiveStore.UnknownError', {
6
6
  cause: Schema.Defect,
7
7
  note: Schema.optional(Schema.String),
8
8
  payload: Schema.optional(Schema.Any),
9
9
  }) {
10
- static mapToUnexpectedError = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
10
+ static mapToUnknownError = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
11
11
  effect.pipe(
12
- Effect.mapError((cause) => (Schema.is(UnexpectedError)(cause) ? cause : new UnexpectedError({ cause }))),
13
- Effect.catchAllDefect((cause) => new UnexpectedError({ cause })),
12
+ Effect.mapError((cause) => (Schema.is(UnknownError)(cause) ? cause : new UnknownError({ cause }))),
13
+ Effect.catchAllDefect((cause) => new UnknownError({ cause })),
14
14
  )
15
15
 
16
- static mapToUnexpectedErrorLayer = <A, E, R>(layer: Layer.Layer<A, E, R>) =>
16
+ static mapToUnknownErrorLayer = <A, E, R>(layer: Layer.Layer<A, E, R>) =>
17
17
  layer.pipe(
18
18
  Layer.catchAllCause((cause) =>
19
- Cause.isFailType(cause) && Schema.is(UnexpectedError)(cause.error)
19
+ Cause.isFailType(cause) && Schema.is(UnknownError)(cause.error)
20
20
  ? Layer.fail(cause.error)
21
- : Layer.fail(new UnexpectedError({ cause: cause })),
21
+ : Layer.fail(new UnknownError({ cause: cause })),
22
22
  ),
23
23
  )
24
24
 
25
- static mapToUnexpectedErrorStream = <A, E, R>(stream: Stream.Stream<A, E, R>) =>
26
- stream.pipe(
27
- Stream.mapError((cause) => (Schema.is(UnexpectedError)(cause) ? cause : new UnexpectedError({ cause }))),
28
- )
25
+ static mapToUnknownErrorStream = <A, E, R>(stream: Stream.Stream<A, E, R>) =>
26
+ stream.pipe(Stream.mapError((cause) => (Schema.is(UnknownError)(cause) ? cause : new UnknownError({ cause }))))
29
27
  }
30
28
 
31
29
  export class MaterializerHashMismatchError extends Schema.TaggedError<MaterializerHashMismatchError>()(
@@ -66,7 +64,7 @@ export class SqliteError extends Schema.TaggedError<SqliteError>()('LiveStore.Sq
66
64
  }) {}
67
65
 
68
66
  export class UnknownEventError extends Schema.TaggedError<UnknownEventError>()('LiveStore.UnknownEventError', {
69
- event: LiveStoreEvent.AnyEncoded.pipe(Schema.pick('name', 'args', 'seqNum', 'clientId', 'sessionId')),
67
+ event: LiveStoreEvent.Client.Encoded.pipe(Schema.pick('name', 'args', 'seqNum', 'clientId', 'sessionId')),
70
68
  reason: Schema.Literal('event-definition-missing', 'materializer-missing'),
71
69
  operation: Schema.String,
72
70
  note: Schema.optional(Schema.String),
@@ -19,12 +19,7 @@ import {
19
19
  SubscriptionRef,
20
20
  } from '@livestore/utils/effect'
21
21
  import type * as otel from '@opentelemetry/api'
22
- import {
23
- type IntentionalShutdownCause,
24
- type MaterializeError,
25
- type SqliteDb,
26
- UnexpectedError,
27
- } from '../adapter-types.ts'
22
+ import { type IntentionalShutdownCause, type MaterializeError, type SqliteDb, UnknownError } from '../adapter-types.ts'
28
23
  import { makeMaterializerHash } from '../materializer-helper.ts'
29
24
  import type { LiveStoreSchema } from '../schema/mod.ts'
30
25
  import { EventSequenceNumber, LiveStoreEvent, resolveEventDef, SystemTables } from '../schema/mod.ts'
@@ -43,7 +38,7 @@ import type { InitialBlockingSyncContext, LeaderSyncProcessor } from './types.ts
43
38
  import { LeaderThreadCtx } from './types.ts'
44
39
 
45
40
  type LocalPushQueueItem = [
46
- event: LiveStoreEvent.EncodedWithMeta,
41
+ event: LiveStoreEvent.Client.EncodedWithMeta,
47
42
  deferred: Deferred.Deferred<void, LeaderAheadError> | undefined,
48
43
  ]
49
44
 
@@ -113,15 +108,15 @@ export const makeLeaderSyncProcessor = ({
113
108
  localPushProcessing?: Effect.Effect<void>
114
109
  }
115
110
  }
116
- }): Effect.Effect<LeaderSyncProcessor, UnexpectedError, Scope.Scope> =>
111
+ }): Effect.Effect<LeaderSyncProcessor, UnknownError, Scope.Scope> =>
117
112
  Effect.gen(function* () {
118
- const syncBackendPushQueue = yield* BucketQueue.make<LiveStoreEvent.EncodedWithMeta>()
113
+ const syncBackendPushQueue = yield* BucketQueue.make<LiveStoreEvent.Client.EncodedWithMeta>()
119
114
  const localPushBatchSize = params.localPushBatchSize ?? 1
120
115
  const backendPushBatchSize = params.backendPushBatchSize ?? 2
121
116
 
122
117
  const syncStateSref = yield* SubscriptionRef.make<SyncState.SyncState | undefined>(undefined)
123
118
 
124
- const isClientEvent = (eventEncoded: LiveStoreEvent.EncodedWithMeta) =>
119
+ const isClientEvent = (eventEncoded: LiveStoreEvent.Client.EncodedWithMeta) =>
125
120
  schema.eventsDefsMap.get(eventEncoded.name)?.options.clientOnly ?? false
126
121
 
127
122
  const connectedClientSessionPullQueues = yield* makePullQueueSet
@@ -151,9 +146,9 @@ export const makeLeaderSyncProcessor = ({
151
146
  *
152
147
  * Thus the purpose of the pushHeadRef is the guard the integrity of the local push queue
153
148
  */
154
- const pushHeadRef = { current: EventSequenceNumber.ROOT }
155
- const advancePushHead = (eventNum: EventSequenceNumber.EventSequenceNumber) => {
156
- pushHeadRef.current = EventSequenceNumber.max(pushHeadRef.current, eventNum)
149
+ const pushHeadRef = { current: EventSequenceNumber.Client.ROOT }
150
+ const advancePushHead = (eventNum: EventSequenceNumber.Client.Composite) => {
151
+ pushHeadRef.current = EventSequenceNumber.Client.max(pushHeadRef.current, eventNum)
157
152
  }
158
153
 
159
154
  // NOTE: New events are only pushed to sync backend after successful local push processing
@@ -205,7 +200,7 @@ export const makeLeaderSyncProcessor = ({
205
200
  sessionId,
206
201
  seqNum: syncState.localHead,
207
202
  },
208
- }).pipe(UnexpectedError.mapToUnexpectedError)
203
+ }).pipe(UnknownError.mapToUnknownError)
209
204
 
210
205
  if (resolution._tag === 'unknown') {
211
206
  // Ignore partial pushes for unrecognised events – they are still
@@ -213,12 +208,12 @@ export const makeLeaderSyncProcessor = ({
213
208
  return
214
209
  }
215
210
 
216
- const eventEncoded = new LiveStoreEvent.EncodedWithMeta({
211
+ const eventEncoded = new LiveStoreEvent.Client.EncodedWithMeta({
217
212
  name,
218
213
  args,
219
214
  clientId,
220
215
  sessionId,
221
- ...EventSequenceNumber.nextPair({
216
+ ...EventSequenceNumber.Client.nextPair({
222
217
  seqNum: syncState.localHead,
223
218
  isClient: resolution.eventDef.options.clientOnly,
224
219
  }),
@@ -260,7 +255,7 @@ export const makeLeaderSyncProcessor = ({
260
255
 
261
256
  const maybeShutdownOnError = (
262
257
  cause: Cause.Cause<
263
- | UnexpectedError
258
+ | UnknownError
264
259
  | IntentionalShutdownCause
265
260
  | IsOfflineError
266
261
  | InvalidPushError
@@ -279,7 +274,7 @@ export const makeLeaderSyncProcessor = ({
279
274
  return
280
275
  }
281
276
 
282
- const errorToSend = Cause.isFailType(cause) ? cause.error : UnexpectedError.make({ cause })
277
+ const errorToSend = Cause.isFailType(cause) ? cause.error : UnknownError.make({ cause })
283
278
  yield* shutdownChannel.send(errorToSend).pipe(Effect.orDie)
284
279
 
285
280
  return yield* Effect.die(cause)
@@ -411,9 +406,9 @@ const backgroundApplyLocalPushes = ({
411
406
  localPushesLatch: Effect.Latch
412
407
  localPushesQueue: BucketQueue.BucketQueue<LocalPushQueueItem>
413
408
  syncStateSref: SubscriptionRef.SubscriptionRef<SyncState.SyncState | undefined>
414
- syncBackendPushQueue: BucketQueue.BucketQueue<LiveStoreEvent.EncodedWithMeta>
409
+ syncBackendPushQueue: BucketQueue.BucketQueue<LiveStoreEvent.Client.EncodedWithMeta>
415
410
  schema: LiveStoreSchema
416
- isClientEvent: (eventEncoded: LiveStoreEvent.EncodedWithMeta) => boolean
411
+ isClientEvent: (eventEncoded: LiveStoreEvent.Client.EncodedWithMeta) => boolean
417
412
  otelSpan: otel.Span | undefined
418
413
  connectedClientSessionPullQueues: PullQueueSet
419
414
  localPushBatchSize: number
@@ -459,7 +454,7 @@ const backgroundApplyLocalPushes = ({
459
454
  */
460
455
  yield* Effect.forEach(
461
456
  droppedItems.filter(
462
- (item): item is [LiveStoreEvent.EncodedWithMeta, Deferred.Deferred<void, LeaderAheadError>] =>
457
+ (item): item is [LiveStoreEvent.Client.EncodedWithMeta, Deferred.Deferred<void, LeaderAheadError>] =>
463
458
  item[1] !== undefined,
464
459
  ),
465
460
  ([eventEncoded, deferred]) =>
@@ -484,16 +479,16 @@ const backgroundApplyLocalPushes = ({
484
479
  syncState,
485
480
  payload: { _tag: 'local-push', newEvents },
486
481
  isClientEvent,
487
- isEqualEvent: LiveStoreEvent.isEqualEncoded,
482
+ isEqualEvent: LiveStoreEvent.Client.isEqualEncoded,
488
483
  })
489
484
 
490
485
  switch (mergeResult._tag) {
491
- case 'unexpected-error': {
492
- otelSpan?.addEvent(`push:unexpected-error`, {
486
+ case 'unknown-error': {
487
+ otelSpan?.addEvent(`push:unknown-error`, {
493
488
  batchSize: newEvents.length,
494
489
  newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
495
490
  })
496
- return yield* new UnexpectedError({ cause: mergeResult.message })
491
+ return yield* new UnknownError({ cause: mergeResult.message })
497
492
  }
498
493
  case 'rebase': {
499
494
  return shouldNeverHappen('The leader thread should never have to rebase due to a local push')
@@ -578,7 +573,7 @@ const backgroundApplyLocalPushes = ({
578
573
  })
579
574
 
580
575
  type MaterializeEventsBatch = (_: {
581
- batchItems: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>
576
+ batchItems: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>
582
577
  /**
583
578
  * The deferreds are used by the caller to know when the mutation has been processed.
584
579
  * Indexes are aligned with `batchItems`
@@ -640,10 +635,10 @@ const backgroundBackendPulling = ({
640
635
  connectedClientSessionPullQueues,
641
636
  advancePushHead,
642
637
  }: {
643
- isClientEvent: (eventEncoded: LiveStoreEvent.EncodedWithMeta) => boolean
638
+ isClientEvent: (eventEncoded: LiveStoreEvent.Client.EncodedWithMeta) => boolean
644
639
  restartBackendPushing: (
645
- filteredRebasedPending: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>,
646
- ) => Effect.Effect<void, UnexpectedError, LeaderThreadCtx | HttpClient.HttpClient>
640
+ filteredRebasedPending: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>,
641
+ ) => Effect.Effect<void, UnknownError, LeaderThreadCtx | HttpClient.HttpClient>
647
642
  otelSpan: otel.Span | undefined
648
643
  syncStateSref: SubscriptionRef.SubscriptionRef<SyncState.SyncState | undefined>
649
644
  dbState: SqliteDb
@@ -653,14 +648,17 @@ const backgroundBackendPulling = ({
653
648
  devtoolsLatch: Effect.Latch | undefined
654
649
  initialBlockingSyncContext: InitialBlockingSyncContext
655
650
  connectedClientSessionPullQueues: PullQueueSet
656
- advancePushHead: (eventNum: EventSequenceNumber.EventSequenceNumber) => void
651
+ advancePushHead: (eventNum: EventSequenceNumber.Client.Composite) => void
657
652
  }) =>
658
653
  Effect.gen(function* () {
659
654
  const { syncBackend, dbState: db, dbEventlog, schema } = yield* LeaderThreadCtx
660
655
 
661
656
  if (syncBackend === undefined) return
662
657
 
663
- const onNewPullChunk = (newEvents: LiveStoreEvent.EncodedWithMeta[], pageInfo: SyncBackend.PullResPageInfo) =>
658
+ const onNewPullChunk = (
659
+ newEvents: LiveStoreEvent.Client.EncodedWithMeta[],
660
+ pageInfo: SyncBackend.PullResPageInfo,
661
+ ) =>
664
662
  Effect.gen(function* () {
665
663
  if (newEvents.length === 0) return
666
664
 
@@ -681,18 +679,18 @@ const backgroundBackendPulling = ({
681
679
  syncState,
682
680
  payload: SyncState.PayloadUpstreamAdvance.make({ newEvents }),
683
681
  isClientEvent,
684
- isEqualEvent: LiveStoreEvent.isEqualEncoded,
682
+ isEqualEvent: LiveStoreEvent.Client.isEqualEncoded,
685
683
  ignoreClientEvents: true,
686
684
  })
687
685
 
688
686
  if (mergeResult._tag === 'reject') {
689
687
  return shouldNeverHappen('The leader thread should never reject upstream advances')
690
- } else if (mergeResult._tag === 'unexpected-error') {
691
- otelSpan?.addEvent(`pull:unexpected-error`, {
688
+ } else if (mergeResult._tag === 'unknown-error') {
689
+ otelSpan?.addEvent(`pull:unknown-error`, {
692
690
  newEventsCount: newEvents.length,
693
691
  newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
694
692
  })
695
- return yield* new UnexpectedError({ cause: mergeResult.message })
693
+ return yield* new UnknownError({ cause: mergeResult.message })
696
694
  }
697
695
 
698
696
  const newBackendHead = newEvents.at(-1)!.seqNum
@@ -748,10 +746,10 @@ const backgroundBackendPulling = ({
748
746
  // `newEvents` instead which we filter via `mergeResult.confirmedEvents`
749
747
  const confirmedNewEvents = newEvents.filter((event) =>
750
748
  mergeResult.confirmedEvents.some((confirmedEvent) =>
751
- EventSequenceNumber.isEqual(event.seqNum, confirmedEvent.seqNum),
749
+ EventSequenceNumber.Client.isEqual(event.seqNum, confirmedEvent.seqNum),
752
750
  ),
753
751
  )
754
- yield* Eventlog.updateSyncMetadata(confirmedNewEvents).pipe(UnexpectedError.mapToUnexpectedError)
752
+ yield* Eventlog.updateSyncMetadata(confirmedNewEvents).pipe(UnknownError.mapToUnknownError)
755
753
  }
756
754
  }
757
755
 
@@ -792,11 +790,11 @@ const backgroundBackendPulling = ({
792
790
  yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true)
793
791
  yield* onNewPullChunk(
794
792
  batch.map((_) =>
795
- LiveStoreEvent.EncodedWithMeta.fromGlobal(_.eventEncoded, {
793
+ LiveStoreEvent.Client.EncodedWithMeta.fromGlobal(_.eventEncoded, {
796
794
  syncMetadata: _.metadata,
797
795
  // TODO we can't really know the materializer result here yet beyond the first event batch item as we need to materialize it one by one first
798
796
  // This is a bug and needs to be fixed https://github.com/livestorejs/livestore/issues/503#issuecomment-3114533165
799
- materializerHashLeader: hashMaterializerResult(LiveStoreEvent.encodedFromGlobal(_.eventEncoded)),
797
+ materializerHashLeader: hashMaterializerResult(LiveStoreEvent.Global.toClientEncoded(_.eventEncoded)),
800
798
  materializerHashSession: Option.none(),
801
799
  }),
802
800
  ),
@@ -819,7 +817,7 @@ const backgroundBackendPushing = ({
819
817
  devtoolsLatch,
820
818
  backendPushBatchSize,
821
819
  }: {
822
- syncBackendPushQueue: BucketQueue.BucketQueue<LiveStoreEvent.EncodedWithMeta>
820
+ syncBackendPushQueue: BucketQueue.BucketQueue<LiveStoreEvent.Client.EncodedWithMeta>
823
821
  otelSpan: otel.Span | undefined
824
822
  devtoolsLatch: Effect.Latch | undefined
825
823
  backendPushBatchSize: number
@@ -850,9 +848,9 @@ const backgroundBackendPushing = ({
850
848
  // - Resets automatically after successful push
851
849
  // TODO(metrics): expose counters/gauges for retry attempts and queue health via devtools/metrics
852
850
 
853
- // Only retry for transient UnexpectedError cases
851
+ // Only retry for transient UnknownError cases
854
852
  const isRetryable = (err: InvalidPushError | IsOfflineError) =>
855
- err._tag === 'InvalidPushError' && err.cause._tag === 'LiveStore.UnexpectedError'
853
+ err._tag === 'InvalidPushError' && err.cause._tag === 'LiveStore.UnknownError'
856
854
 
857
855
  // Input: InvalidPushError | IsOfflineError, Output: Duration
858
856
  const retrySchedule: Schedule.Schedule<Duration.DurationInput, InvalidPushError | IsOfflineError> =
@@ -894,7 +892,7 @@ const backgroundBackendPushing = ({
894
892
  }
895
893
  }).pipe(Effect.interruptible, Effect.withSpan('@livestore/common:LeaderSyncProcessor:backend-pushing'))
896
894
 
897
- const trimChangesetRows = (db: SqliteDb, newHead: EventSequenceNumber.EventSequenceNumber) => {
895
+ const trimChangesetRows = (db: SqliteDb, newHead: EventSequenceNumber.Client.Composite) => {
898
896
  // Since we're using the session changeset rows to query for the current head,
899
897
  // we're keeping at least one row for the current head, and thus are using `<` instead of `<=`
900
898
  db.execute(sql`DELETE FROM ${SystemTables.SESSION_CHANGESET_META_TABLE} WHERE seqNumGlobal < ${newHead.global}`)
@@ -902,16 +900,16 @@ const trimChangesetRows = (db: SqliteDb, newHead: EventSequenceNumber.EventSeque
902
900
 
903
901
  interface PullQueueSet {
904
902
  makeQueue: (
905
- cursor: EventSequenceNumber.EventSequenceNumber,
903
+ cursor: EventSequenceNumber.Client.Composite,
906
904
  ) => Effect.Effect<
907
905
  Queue.Queue<{ payload: typeof SyncState.PayloadUpstream.Type }>,
908
- UnexpectedError,
906
+ UnknownError,
909
907
  Scope.Scope | LeaderThreadCtx
910
908
  >
911
909
  offer: (item: {
912
910
  payload: typeof SyncState.PayloadUpstream.Type
913
- leaderHead: EventSequenceNumber.EventSequenceNumber
914
- }) => Effect.Effect<void, UnexpectedError>
911
+ leaderHead: EventSequenceNumber.Client.Composite
912
+ }) => Effect.Effect<void, UnknownError>
915
913
  }
916
914
 
917
915
  const makePullQueueSet = Effect.gen(function* () {
@@ -941,17 +939,17 @@ const makePullQueueSet = Effect.gen(function* () {
941
939
 
942
940
  const payloadsSinceCursor = Array.from(cachedPayloads.entries())
943
941
  .flatMap(([seqNumStr, payloads]) =>
944
- payloads.map((payload) => ({ payload, seqNum: EventSequenceNumber.fromString(seqNumStr) })),
942
+ payloads.map((payload) => ({ payload, seqNum: EventSequenceNumber.Client.fromString(seqNumStr) })),
945
943
  )
946
- .filter(({ seqNum }) => EventSequenceNumber.isGreaterThan(seqNum, cursor))
947
- .toSorted((a, b) => EventSequenceNumber.compare(a.seqNum, b.seqNum))
944
+ .filter(({ seqNum }) => EventSequenceNumber.Client.isGreaterThan(seqNum, cursor))
945
+ .toSorted((a, b) => EventSequenceNumber.Client.compare(a.seqNum, b.seqNum))
948
946
  .map(({ payload }) => {
949
947
  if (payload._tag === 'upstream-advance') {
950
948
  return {
951
949
  payload: {
952
950
  _tag: 'upstream-advance' as const,
953
951
  newEvents: ReadonlyArray.dropWhile(payload.newEvents, (eventEncoded) =>
954
- EventSequenceNumber.isGreaterThanOrEqual(cursor, eventEncoded.seqNum),
952
+ EventSequenceNumber.Client.isGreaterThanOrEqual(cursor, eventEncoded.seqNum),
955
953
  ),
956
954
  },
957
955
  }
@@ -997,7 +995,7 @@ const makePullQueueSet = Effect.gen(function* () {
997
995
 
998
996
  const offer: PullQueueSet['offer'] = (item) =>
999
997
  Effect.gen(function* () {
1000
- const seqNumStr = EventSequenceNumber.toString(item.leaderHead)
998
+ const seqNumStr = EventSequenceNumber.Client.toString(item.leaderHead)
1001
999
  if (cachedPayloads.has(seqNumStr)) {
1002
1000
  cachedPayloads.get(seqNumStr)!.push(item.payload)
1003
1001
  } else {
@@ -1028,8 +1026,8 @@ const makePullQueueSet = Effect.gen(function* () {
1028
1026
  * event sits ahead of the current push head.
1029
1027
  */
1030
1028
  const validatePushBatch = (
1031
- batch: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>,
1032
- pushHead: EventSequenceNumber.EventSequenceNumber,
1029
+ batch: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>,
1030
+ pushHead: EventSequenceNumber.Client.Composite,
1033
1031
  ) =>
1034
1032
  Effect.gen(function* () {
1035
1033
  if (batch.length === 0) {
@@ -1041,7 +1039,7 @@ const validatePushBatch = (
1041
1039
  // monotonic from B’s perspective, but we must reject and force B to rebase locally
1042
1040
  // so the leader never regresses.
1043
1041
  for (let i = 1; i < batch.length; i++) {
1044
- if (EventSequenceNumber.isGreaterThanOrEqual(batch[i - 1]!.seqNum, batch[i]!.seqNum)) {
1042
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(batch[i - 1]!.seqNum, batch[i]!.seqNum)) {
1045
1043
  return yield* LeaderAheadError.make({
1046
1044
  minimumExpectedNum: batch[i - 1]!.seqNum,
1047
1045
  providedNum: batch[i]!.seqNum,
@@ -1050,7 +1048,7 @@ const validatePushBatch = (
1050
1048
  }
1051
1049
 
1052
1050
  // Make sure smallest sequence number is > pushHead
1053
- if (EventSequenceNumber.isGreaterThanOrEqual(pushHead, batch[0]!.seqNum)) {
1051
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(pushHead, batch[0]!.seqNum)) {
1054
1052
  return yield* LeaderAheadError.make({
1055
1053
  minimumExpectedNum: pushHead,
1056
1054
  providedNum: batch[0]!.seqNum,
@@ -2,8 +2,8 @@ import { LS_DEV, shouldNeverHappen } from '@livestore/utils'
2
2
  import { Effect, Option, Schema } from '@livestore/utils/effect'
3
3
 
4
4
  import type { SqliteDb } from '../adapter-types.ts'
5
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
6
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
5
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts'
6
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
7
7
  import {
8
8
  EVENTLOG_META_TABLE,
9
9
  eventlogMetaTable,
@@ -34,7 +34,7 @@ export const initEventlogDb = (dbEventlog: SqliteDb) =>
34
34
  yield* execSql(
35
35
  dbEventlog,
36
36
  sql`INSERT INTO ${SYNC_STATUS_TABLE} (head)
37
- SELECT ${EventSequenceNumber.ROOT.global}
37
+ SELECT ${EventSequenceNumber.Client.ROOT.global}
38
38
  WHERE NOT EXISTS (SELECT 1 FROM ${SYNC_STATUS_TABLE})`,
39
39
  {},
40
40
  )
@@ -51,8 +51,8 @@ export const getEventsSince = ({
51
51
  }: {
52
52
  dbEventlog: SqliteDb
53
53
  dbState: SqliteDb
54
- since: EventSequenceNumber.EventSequenceNumber
55
- }): ReadonlyArray<LiveStoreEvent.EncodedWithMeta> => {
54
+ since: EventSequenceNumber.Client.Composite
55
+ }): ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta> => {
56
56
  const pendingEvents = dbEventlog.select(eventlogMetaTable.where('seqNumGlobal', '>=', since.global))
57
57
 
58
58
  const sessionChangesetRowsDecoded = dbState.select(
@@ -66,7 +66,7 @@ export const getEventsSince = ({
66
66
  readModelEvent.seqNumGlobal === eventlogEvent.seqNumGlobal &&
67
67
  readModelEvent.seqNumClient === eventlogEvent.seqNumClient,
68
68
  )
69
- return LiveStoreEvent.EncodedWithMeta.make({
69
+ return LiveStoreEvent.Client.EncodedWithMeta.make({
70
70
  name: eventlogEvent.name,
71
71
  args: eventlogEvent.argsJson,
72
72
  seqNum: {
@@ -96,14 +96,14 @@ export const getEventsSince = ({
96
96
  },
97
97
  })
98
98
  })
99
- .filter((_) => EventSequenceNumber.compare(_.seqNum, since) > 0)
100
- .sort((a, b) => EventSequenceNumber.compare(a.seqNum, b.seqNum))
99
+ .filter((_) => EventSequenceNumber.Client.compare(_.seqNum, since) > 0)
100
+ .sort((a, b) => EventSequenceNumber.Client.compare(a.seqNum, b.seqNum))
101
101
  }
102
102
 
103
- export const getClientHeadFromDb = (dbEventlog: SqliteDb): EventSequenceNumber.EventSequenceNumber => {
103
+ export const getClientHeadFromDb = (dbEventlog: SqliteDb): EventSequenceNumber.Client.Composite => {
104
104
  const res = dbEventlog.select<{
105
- seqNumGlobal: EventSequenceNumber.GlobalEventSequenceNumber
106
- seqNumClient: EventSequenceNumber.ClientEventSequenceNumber
105
+ seqNumGlobal: EventSequenceNumber.Global.Type
106
+ seqNumClient: EventSequenceNumber.Client.Type
107
107
  seqNumRebaseGeneration: number
108
108
  }>(
109
109
  sql`select seqNumGlobal, seqNumClient, seqNumRebaseGeneration from ${EVENTLOG_META_TABLE} order by seqNumGlobal DESC, seqNumClient DESC limit 1`,
@@ -111,16 +111,15 @@ export const getClientHeadFromDb = (dbEventlog: SqliteDb): EventSequenceNumber.E
111
111
 
112
112
  return res
113
113
  ? { global: res.seqNumGlobal, client: res.seqNumClient, rebaseGeneration: res.seqNumRebaseGeneration }
114
- : EventSequenceNumber.ROOT
114
+ : EventSequenceNumber.Client.ROOT
115
115
  }
116
116
 
117
- export const getBackendHeadFromDb = (dbEventlog: SqliteDb): EventSequenceNumber.GlobalEventSequenceNumber =>
118
- dbEventlog.select<{ head: EventSequenceNumber.GlobalEventSequenceNumber }>(
119
- sql`select head from ${SYNC_STATUS_TABLE}`,
120
- )[0]?.head ?? EventSequenceNumber.ROOT.global
117
+ export const getBackendHeadFromDb = (dbEventlog: SqliteDb): EventSequenceNumber.Global.Type =>
118
+ dbEventlog.select<{ head: EventSequenceNumber.Global.Type }>(sql`select head from ${SYNC_STATUS_TABLE}`)[0]?.head ??
119
+ EventSequenceNumber.Client.ROOT.global
121
120
 
122
121
  // TODO use prepared statements
123
- export const updateBackendHead = (dbEventlog: SqliteDb, head: EventSequenceNumber.EventSequenceNumber) =>
122
+ export const updateBackendHead = (dbEventlog: SqliteDb, head: EventSequenceNumber.Client.Composite) =>
124
123
  dbEventlog.execute(sql`UPDATE ${SYNC_STATUS_TABLE} SET head = ${head.global}`)
125
124
 
126
125
  export const getBackendIdFromDb = (dbEventlog: SqliteDb): Option.Option<string> =>
@@ -132,7 +131,7 @@ export const updateBackendId = (dbEventlog: SqliteDb, backendId: string) =>
132
131
  dbEventlog.execute(sql`UPDATE ${SYNC_STATUS_TABLE} SET backendId = '${backendId}'`)
133
132
 
134
133
  export const insertIntoEventlog = (
135
- eventEncoded: LiveStoreEvent.EncodedWithMeta,
134
+ eventEncoded: LiveStoreEvent.Client.EncodedWithMeta,
136
135
  dbEventlog: SqliteDb,
137
136
  eventDefSchemaHash: number,
138
137
  clientId: string,
@@ -140,7 +139,7 @@ export const insertIntoEventlog = (
140
139
  ) =>
141
140
  Effect.gen(function* () {
142
141
  // Check history consistency during LS_DEV
143
- if (LS_DEV && eventEncoded.parentSeqNum.global !== EventSequenceNumber.ROOT.global) {
142
+ if (LS_DEV && eventEncoded.parentSeqNum.global !== EventSequenceNumber.Client.ROOT.global) {
144
143
  const parentEventExists =
145
144
  dbEventlog.select<{ count: number }>(
146
145
  `SELECT COUNT(*) as count FROM ${EVENTLOG_META_TABLE} WHERE seqNumGlobal = ? AND seqNumClient = ?`,
@@ -180,7 +179,7 @@ export const insertIntoEventlog = (
180
179
  dbEventlog.debug.head = eventEncoded.seqNum
181
180
  })
182
181
 
183
- export const updateSyncMetadata = (items: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>) =>
182
+ export const updateSyncMetadata = (items: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>) =>
184
183
  Effect.gen(function* () {
185
184
  const { dbEventlog } = yield* LeaderThreadCtx
186
185
 
@@ -200,15 +199,11 @@ export const updateSyncMetadata = (items: ReadonlyArray<LiveStoreEvent.EncodedWi
200
199
  }
201
200
  })
202
201
 
203
- export const getSyncBackendCursorInfo = ({
204
- remoteHead,
205
- }: {
206
- remoteHead: EventSequenceNumber.GlobalEventSequenceNumber
207
- }) =>
202
+ export const getSyncBackendCursorInfo = ({ remoteHead }: { remoteHead: EventSequenceNumber.Global.Type }) =>
208
203
  Effect.gen(function* () {
209
204
  const { dbEventlog } = yield* LeaderThreadCtx
210
205
 
211
- if (remoteHead === EventSequenceNumber.ROOT.global) return Option.none()
206
+ if (remoteHead === EventSequenceNumber.Client.ROOT.global) return Option.none()
212
207
 
213
208
  const EventlogQuerySchema = Schema.Struct({
214
209
  syncMetadataJson: Schema.parseJson(Schema.Option(Schema.JsonValue)),
@@ -1,7 +1,7 @@
1
1
  import { Effect, FiberMap, Option, Stream, SubscriptionRef } from '@livestore/utils/effect'
2
2
  import { nanoid } from '@livestore/utils/nanoid'
3
3
 
4
- import { Devtools, IntentionalShutdownCause, liveStoreVersion, UnexpectedError } from '../index.ts'
4
+ import { Devtools, IntentionalShutdownCause, liveStoreVersion, UnknownError } from '../index.ts'
5
5
  import { SystemTables } from '../schema/mod.ts'
6
6
  import type { DevtoolsOptions, PersistenceInfoPair } from './types.ts'
7
7
  import { LeaderThreadCtx } from './types.ts'
@@ -184,7 +184,7 @@ const listenToDevtools = ({
184
184
  sendMessage(
185
185
  Devtools.Leader.LoadDatabaseFile.Error.make({
186
186
  ...reqPayload,
187
- cause: { _tag: 'unexpected-error' as const, cause },
187
+ cause: { _tag: 'unknown-error' as const, cause },
188
188
  }),
189
189
  ),
190
190
  ),
@@ -391,7 +391,7 @@ const listenToDevtools = ({
391
391
  }
392
392
  }).pipe(Effect.withSpan(`@livestore/common:leader-thread:onDevtoolsMessage:${decodedEvent._tag}`)),
393
393
  ),
394
- UnexpectedError.mapToUnexpectedErrorStream,
394
+ UnknownError.mapToUnknownErrorStream,
395
395
  Stream.runDrain,
396
396
  )
397
397
  })