@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
@@ -15,10 +15,10 @@ import {
15
15
  } from '@livestore/utils/effect'
16
16
  import type * as otel from '@opentelemetry/api'
17
17
 
18
- import { type ClientSession, UnexpectedError } from '../adapter-types.ts'
18
+ import { type ClientSession, UnknownError } from '../adapter-types.ts'
19
19
  import type { MaterializeError } from '../errors.ts'
20
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
21
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
20
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts'
21
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
22
22
  import type { LiveStoreSchema } from '../schema/mod.ts'
23
23
  import * as SyncState from './syncstate.ts'
24
24
 
@@ -52,7 +52,7 @@ export const makeClientSessionSyncProcessor = ({
52
52
  clientSession: ClientSession
53
53
  runtime: Runtime.Runtime<Scope.Scope>
54
54
  materializeEvent: (
55
- eventEncoded: LiveStoreEvent.EncodedWithMeta,
55
+ eventEncoded: LiveStoreEvent.Client.EncodedWithMeta,
56
56
  options: { withChangeset: boolean; materializerHashLeader: Option.Option<number> },
57
57
  ) => Effect.Effect<
58
58
  {
@@ -78,7 +78,7 @@ export const makeClientSessionSyncProcessor = ({
78
78
  */
79
79
  confirmUnsavedChanges: boolean
80
80
  }): ClientSessionSyncProcessor => {
81
- const eventSchema = LiveStoreEvent.makeEventDefSchemaMemo(schema)
81
+ const eventSchema = LiveStoreEvent.Client.makeSchemaMemo(schema)
82
82
 
83
83
  const simSleep = <TKey extends keyof ClientSessionSyncProcessorSimulationParams>(
84
84
  key: TKey,
@@ -97,11 +97,11 @@ export const makeClientSessionSyncProcessor = ({
97
97
 
98
98
  /** Only used for debugging / observability / testing, it's not relied upon for correctness of the sync processor. */
99
99
  const syncStateUpdateQueue = Queue.unbounded<SyncState.SyncState>().pipe(Effect.runSync)
100
- const isClientEvent = (eventEncoded: LiveStoreEvent.EncodedWithMeta) =>
100
+ const isClientEvent = (eventEncoded: LiveStoreEvent.Client.EncodedWithMeta) =>
101
101
  schema.eventsDefsMap.get(eventEncoded.name)?.options.clientOnly ?? false
102
102
 
103
103
  /** We're queuing push requests to reduce the number of messages sent to the leader by batching them */
104
- const leaderPushQueue = BucketQueue.make<LiveStoreEvent.EncodedWithMeta>().pipe(Effect.runSync)
104
+ const leaderPushQueue = BucketQueue.make<LiveStoreEvent.Client.EncodedWithMeta>().pipe(Effect.runSync)
105
105
 
106
106
  const push: ClientSessionSyncProcessor['push'] = Effect.fn('client-session-sync-processor:push')(function* (batch) {
107
107
  // TODO validate batch
@@ -112,13 +112,13 @@ export const makeClientSessionSyncProcessor = ({
112
112
  if (eventDef === undefined) {
113
113
  return shouldNeverHappen(`No event definition found for \`${name}\`.`)
114
114
  }
115
- const nextNumPair = EventSequenceNumber.nextPair({
115
+ const nextNumPair = EventSequenceNumber.Client.nextPair({
116
116
  seqNum: baseEventSequenceNumber,
117
117
  isClient: eventDef.options.clientOnly,
118
118
  rebaseGeneration: baseEventSequenceNumber.rebaseGeneration,
119
119
  })
120
120
  baseEventSequenceNumber = nextNumPair.seqNum
121
- return new LiveStoreEvent.EncodedWithMeta(
121
+ return new LiveStoreEvent.Client.EncodedWithMeta(
122
122
  Schema.encodeUnknownSync(eventSchema)({
123
123
  name,
124
124
  args,
@@ -133,7 +133,7 @@ export const makeClientSessionSyncProcessor = ({
133
133
  syncState: syncStateRef.current,
134
134
  payload: { _tag: 'local-push', newEvents: encodedEventDefs },
135
135
  isClientEvent,
136
- isEqualEvent: LiveStoreEvent.isEqualEncoded,
136
+ isEqualEvent: LiveStoreEvent.Client.isEqualEncoded,
137
137
  })
138
138
 
139
139
  yield* Effect.annotateCurrentSpan({
@@ -146,8 +146,8 @@ export const makeClientSessionSyncProcessor = ({
146
146
  ...(TRACE_VERBOSE && { mergeResult: JSON.stringify(mergeResult) }),
147
147
  })
148
148
 
149
- if (mergeResult._tag === 'unexpected-error') {
150
- return shouldNeverHappen('Unexpected error in client-session-sync-processor', mergeResult.message)
149
+ if (mergeResult._tag === 'unknown-error') {
150
+ return shouldNeverHappen('Unknown error in client-session-sync-processor', mergeResult.message)
151
151
  }
152
152
 
153
153
  if (mergeResult._tag !== 'advance') {
@@ -233,11 +233,11 @@ export const makeClientSessionSyncProcessor = ({
233
233
  syncState: syncStateRef.current,
234
234
  payload,
235
235
  isClientEvent,
236
- isEqualEvent: LiveStoreEvent.isEqualEncoded,
236
+ isEqualEvent: LiveStoreEvent.Client.isEqualEncoded,
237
237
  })
238
238
 
239
- if (mergeResult._tag === 'unexpected-error') {
240
- return yield* new UnexpectedError({ cause: mergeResult.message })
239
+ if (mergeResult._tag === 'unknown-error') {
240
+ return yield* new UnknownError({ cause: mergeResult.message })
241
241
  } else if (mergeResult._tag === 'reject') {
242
242
  return shouldNeverHappen('Unexpected reject in client-session-sync-processor', mergeResult)
243
243
  }
@@ -373,9 +373,9 @@ export const makeClientSessionSyncProcessor = ({
373
373
 
374
374
  export interface ClientSessionSyncProcessor {
375
375
  push: (
376
- batch: ReadonlyArray<LiveStoreEvent.PartialAnyDecoded>,
376
+ batch: ReadonlyArray<LiveStoreEvent.Input.Decoded>,
377
377
  ) => Effect.Effect<{ writeTables: Set<string> }, MaterializeError>
378
- boot: Effect.Effect<void, UnexpectedError, Scope.Scope>
378
+ boot: Effect.Effect<void, UnknownError, Scope.Scope>
379
379
  /**
380
380
  * Only used for debugging / observability.
381
381
  */
@@ -1,5 +1,5 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
- import { UnexpectedError } from '../errors.ts'
2
+ import { UnknownError } from '../errors.ts'
3
3
  import { EventSequenceNumber } from '../schema/mod.ts'
4
4
 
5
5
  export class IsOfflineError extends Schema.TaggedError<IsOfflineError>()('IsOfflineError', {
@@ -15,12 +15,12 @@ export class BackendIdMismatchError extends Schema.TaggedError<BackendIdMismatch
15
15
  }) {}
16
16
 
17
17
  export class ServerAheadError extends Schema.TaggedError<ServerAheadError>()('ServerAheadError', {
18
- minimumExpectedNum: EventSequenceNumber.GlobalEventSequenceNumber,
19
- providedNum: EventSequenceNumber.GlobalEventSequenceNumber,
18
+ minimumExpectedNum: EventSequenceNumber.Global.Schema,
19
+ providedNum: EventSequenceNumber.Global.Schema,
20
20
  }) {}
21
21
 
22
22
  export class InvalidPushError extends Schema.TaggedError<InvalidPushError>()('InvalidPushError', {
23
- cause: Schema.Union(UnexpectedError, ServerAheadError, BackendIdMismatchError),
23
+ cause: Schema.Union(UnknownError, ServerAheadError, BackendIdMismatchError),
24
24
  }) {}
25
25
 
26
26
  export class InvalidPullError extends Schema.TaggedError<InvalidPullError>()('InvalidPullError', {
@@ -28,8 +28,8 @@ export class InvalidPullError extends Schema.TaggedError<InvalidPullError>()('In
28
28
  }) {}
29
29
 
30
30
  export class LeaderAheadError extends Schema.TaggedError<LeaderAheadError>()('LeaderAheadError', {
31
- minimumExpectedNum: EventSequenceNumber.EventSequenceNumber,
32
- providedNum: EventSequenceNumber.EventSequenceNumber,
31
+ minimumExpectedNum: EventSequenceNumber.Client.Composite,
32
+ providedNum: EventSequenceNumber.Client.Composite,
33
33
  /** Generation number the client session should use for subsequent pushes */
34
34
  // nextGeneration: Schema.Number,
35
35
  }) {}
@@ -1,21 +1,21 @@
1
1
  import type { Schema, Scope } from '@livestore/utils/effect'
2
2
  import { Effect, Mailbox, Option, Queue, Stream, SubscriptionRef } from '@livestore/utils/effect'
3
- import { UnexpectedError } from '../errors.ts'
3
+ import { UnknownError } from '../errors.ts'
4
4
  import { EventSequenceNumber, type LiveStoreEvent } from '../schema/mod.ts'
5
5
  import { InvalidPushError } from './errors.ts'
6
6
  import * as SyncBackend from './sync-backend.ts'
7
7
  import { validatePushPayload } from './validate-push-payload.ts'
8
8
 
9
9
  export interface MockSyncBackend {
10
- pushedEvents: Stream.Stream<LiveStoreEvent.AnyEncodedGlobal>
10
+ pushedEvents: Stream.Stream<LiveStoreEvent.Global.Encoded>
11
11
  connect: Effect.Effect<void>
12
12
  disconnect: Effect.Effect<void>
13
- makeSyncBackend: Effect.Effect<SyncBackend.SyncBackend, UnexpectedError, Scope.Scope>
14
- advance: (...batch: LiveStoreEvent.AnyEncodedGlobal[]) => Effect.Effect<void>
13
+ makeSyncBackend: Effect.Effect<SyncBackend.SyncBackend, UnknownError, Scope.Scope>
14
+ advance: (...batch: LiveStoreEvent.Global.Encoded[]) => Effect.Effect<void>
15
15
  /** Fail the next N push calls with an InvalidPushError (or custom error) */
16
16
  failNextPushes: (
17
17
  count: number,
18
- error?: (batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>) => Effect.Effect<never, InvalidPushError>,
18
+ error?: (batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>) => Effect.Effect<never, InvalidPushError>,
19
19
  ) => Effect.Effect<void>
20
20
  }
21
21
 
@@ -29,13 +29,13 @@ export interface MockSyncBackendOptions {
29
29
 
30
30
  export const makeMockSyncBackend = (
31
31
  options?: MockSyncBackendOptions,
32
- ): Effect.Effect<MockSyncBackend, UnexpectedError, Scope.Scope> =>
32
+ ): Effect.Effect<MockSyncBackend, UnknownError, Scope.Scope> =>
33
33
  Effect.gen(function* () {
34
- const syncEventSequenceNumberRef = { current: EventSequenceNumber.ROOT.global }
35
- const syncPullQueue = yield* Queue.unbounded<LiveStoreEvent.AnyEncodedGlobal>()
36
- const pushedEventsQueue = yield* Mailbox.make<LiveStoreEvent.AnyEncodedGlobal>()
34
+ const syncEventSequenceNumberRef = { current: EventSequenceNumber.Client.ROOT.global }
35
+ const syncPullQueue = yield* Queue.unbounded<LiveStoreEvent.Global.Encoded>()
36
+ const pushedEventsQueue = yield* Mailbox.make<LiveStoreEvent.Global.Encoded>()
37
37
  const syncIsConnectedRef = yield* SubscriptionRef.make(options?.startConnected ?? false)
38
- const allEventsRef: { current: LiveStoreEvent.AnyEncodedGlobal[] } = { current: [] }
38
+ const allEventsRef: { current: LiveStoreEvent.Global.Encoded[] } = { current: [] }
39
39
 
40
40
  const span = yield* Effect.currentSpan.pipe(Effect.orDie)
41
41
 
@@ -44,7 +44,7 @@ export const makeMockSyncBackend = (
44
44
  // TODO improve the API and implementation of simulating errors
45
45
  const failCounterRef = yield* SubscriptionRef.make(0)
46
46
  const failEffectRef = yield* SubscriptionRef.make<
47
- ((batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>) => Effect.Effect<never, InvalidPushError>) | undefined
47
+ ((batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>) => Effect.Effect<never, InvalidPushError>) | undefined
48
48
  >(undefined)
49
49
 
50
50
  const makeSyncBackend = Effect.gen(function* () {
@@ -73,14 +73,14 @@ export const makeMockSyncBackend = (
73
73
  Effect.sync(() => {
74
74
  const lastSeen = cursor.pipe(
75
75
  Option.match({
76
- onNone: () => EventSequenceNumber.ROOT.global,
76
+ onNone: () => EventSequenceNumber.Client.ROOT.global,
77
77
  onSome: (_) => _.eventSequenceNumber,
78
78
  }),
79
79
  )
80
80
  // All events with seqNum greater than lastSeen
81
81
  const slice = allEventsRef.current.filter((e) => e.seqNum > lastSeen)
82
82
  // Split into configured chunk size
83
- const chunks: { events: LiveStoreEvent.AnyEncodedGlobal[]; remaining: number }[] = []
83
+ const chunks: { events: LiveStoreEvent.Global.Encoded[]; remaining: number }[] = []
84
84
  for (let i = 0; i < slice.length; i += nonLiveChunkSize) {
85
85
  const end = Math.min(i + nonLiveChunkSize, slice.length)
86
86
  const remaining = Math.max(slice.length - end, 0)
@@ -115,7 +115,7 @@ export const makeMockSyncBackend = (
115
115
  return yield* maybeFail(batch)
116
116
  }
117
117
  return yield* new InvalidPushError({
118
- cause: new UnexpectedError({ cause: new Error('MockSyncBackend: simulated push failure') }),
118
+ cause: new UnknownError({ cause: new Error('MockSyncBackend: simulated push failure') }),
119
119
  })
120
120
  }
121
121
 
@@ -146,7 +146,7 @@ export const makeMockSyncBackend = (
146
146
  })
147
147
  })
148
148
 
149
- const advance = (...batch: LiveStoreEvent.AnyEncodedGlobal[]) =>
149
+ const advance = (...batch: LiveStoreEvent.Global.Encoded[]) =>
150
150
  Effect.gen(function* () {
151
151
  syncEventSequenceNumberRef.current = batch.at(-1)!.seqNum
152
152
  allEventsRef.current = allEventsRef.current.concat(batch)
@@ -164,7 +164,7 @@ export const makeMockSyncBackend = (
164
164
 
165
165
  const failNextPushes = (
166
166
  count: number,
167
- error?: (batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>) => Effect.Effect<never, InvalidPushError>,
167
+ error?: (batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>) => Effect.Effect<never, InvalidPushError>,
168
168
  ) =>
169
169
  Effect.gen(function* () {
170
170
  yield* SubscriptionRef.set(failCounterRef, count)
@@ -206,14 +206,14 @@ const dagReplacesDag = (dagA: HistoryDag, dagB: HistoryDag): boolean => {
206
206
  const removeEvent = (dag: HistoryDag, eventNumStr: string) => {
207
207
  // console.debug('removing event', eventNumStr)
208
208
  const event = dag.getNodeAttributes(eventNumStr)
209
- const parentSeqNumStr = EventSequenceNumber.toString(event.parentSeqNum)
209
+ const parentSeqNumStr = EventSequenceNumber.Client.toString(event.parentSeqNum)
210
210
  const childEdges = dag.outboundEdgeEntries(eventNumStr)
211
211
 
212
212
  for (const childEdge of childEdges) {
213
213
  if (childEdge.attributes.type === 'parent') {
214
214
  const childEvent = dag.getNodeAttributes(childEdge.target)
215
215
  childEvent.parentSeqNum = { ...event.parentSeqNum }
216
- dag.addEdge(parentSeqNumStr, EventSequenceNumber.toString(childEvent.seqNum), { type: 'parent' })
216
+ dag.addEdge(parentSeqNumStr, EventSequenceNumber.Client.toString(childEvent.seqNum), { type: 'parent' })
217
217
  }
218
218
  }
219
219
 
@@ -5,13 +5,13 @@ import type {
5
5
  EventDefFactsGroup,
6
6
  EventDefFactsSnapshot,
7
7
  FactsCallback,
8
- } from '../../schema/EventDef.ts'
9
- import type * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
8
+ } from '../../schema/EventDef/mod.ts'
9
+ import type * as EventSequenceNumber from '../../schema/EventSequenceNumber/mod.ts'
10
10
  import { EMPTY_FACT_VALUE, type HistoryDag, type HistoryDagNode } from './history-dag-common.ts'
11
11
 
12
12
  export const factsSnapshotForEvents = (
13
13
  events: HistoryDagNode[],
14
- endEventSequenceNumber: EventSequenceNumber.EventSequenceNumber,
14
+ endEventSequenceNumber: EventSequenceNumber.Client.Composite,
15
15
  ): EventDefFactsSnapshot => {
16
16
  const facts = new Map<string, any>()
17
17
 
@@ -28,7 +28,7 @@ export const factsSnapshotForEvents = (
28
28
 
29
29
  export const factsSnapshotForDag = (
30
30
  dag: HistoryDag,
31
- endEventSequenceNumber: EventSequenceNumber.EventSequenceNumber | undefined,
31
+ endEventSequenceNumber: EventSequenceNumber.Client.Composite | undefined,
32
32
  ): EventDefFactsSnapshot => {
33
33
  const facts = new Map<string, any>()
34
34
 
@@ -225,8 +225,8 @@ export const getFactsGroupForEventArgs = ({
225
225
  }
226
226
 
227
227
  export const compareEventSequenceNumbers = (
228
- a: EventSequenceNumber.EventSequenceNumber,
229
- b: EventSequenceNumber.EventSequenceNumber,
228
+ a: EventSequenceNumber.Client.Composite,
229
+ b: EventSequenceNumber.Client.Composite,
230
230
  ) => {
231
231
  if (a.global !== b.global) {
232
232
  return a.global - b.global
@@ -1,14 +1,14 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
  import { Graph } from '@livestore/utils/effect'
3
- import type { EventDefFactsGroup } from '../../schema/EventDef.ts'
4
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
3
+ import type { EventDefFactsGroup } from '../../schema/EventDef/mod.ts'
4
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber/mod.ts'
5
5
 
6
6
  export const connectionTypeOptions = ['parent', 'facts'] as const
7
7
  export type ConnectionType = (typeof connectionTypeOptions)[number]
8
8
 
9
9
  export type HistoryDagNode = {
10
- seqNum: EventSequenceNumber.EventSequenceNumber
11
- parentSeqNum: EventSequenceNumber.EventSequenceNumber
10
+ seqNum: EventSequenceNumber.Client.Composite
11
+ parentSeqNum: EventSequenceNumber.Client.Composite
12
12
  name: string
13
13
  args: any
14
14
  /** Facts are being used for conflict detection and history compaction */
@@ -283,13 +283,13 @@ export class HistoryDag {
283
283
  export const emptyHistoryDag = (): HistoryDag => HistoryDag.create({ allowSelfLoops: false })
284
284
 
285
285
  // TODO consider making `ROOT_ID` parent to itself
286
- export const rootParentNum = EventSequenceNumber.make({
287
- global: EventSequenceNumber.ROOT.global - 1,
288
- client: EventSequenceNumber.clientDefault,
286
+ export const rootParentNum = EventSequenceNumber.Client.Composite.make({
287
+ global: EventSequenceNumber.Client.ROOT.global - 1,
288
+ client: EventSequenceNumber.Client.DEFAULT,
289
289
  })
290
290
 
291
291
  export const rootEventNode: HistoryDagNode = {
292
- seqNum: EventSequenceNumber.ROOT,
292
+ seqNum: EventSequenceNumber.Client.ROOT,
293
293
  parentSeqNum: rootParentNum,
294
294
  // unused below
295
295
  name: '__Root__',
@@ -1,4 +1,4 @@
1
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
1
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber/mod.ts'
2
2
  import { factsToString, validateFacts } from './facts.ts'
3
3
  import { emptyHistoryDag, type HistoryDagNode, rootParentNum } from './history-dag-common.ts'
4
4
 
@@ -19,14 +19,18 @@ export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skip
19
19
  const dag = emptyHistoryDag()
20
20
 
21
21
  dagNodes.forEach((node) => {
22
- dag.addNode(EventSequenceNumber.toString(node.seqNum), node)
22
+ dag.addNode(EventSequenceNumber.Client.toString(node.seqNum), node)
23
23
  })
24
24
 
25
25
  dagNodes.forEach((node) => {
26
- if (EventSequenceNumber.toString(node.parentSeqNum) !== EventSequenceNumber.toString(rootParentNum)) {
27
- dag.addEdge(EventSequenceNumber.toString(node.parentSeqNum), EventSequenceNumber.toString(node.seqNum), {
28
- type: 'parent',
29
- })
26
+ if (EventSequenceNumber.Client.toString(node.parentSeqNum) !== EventSequenceNumber.Client.toString(rootParentNum)) {
27
+ dag.addEdge(
28
+ EventSequenceNumber.Client.toString(node.parentSeqNum),
29
+ EventSequenceNumber.Client.toString(node.seqNum),
30
+ {
31
+ type: 'parent',
32
+ },
33
+ )
30
34
  }
31
35
  })
32
36
 
@@ -35,9 +39,9 @@ export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skip
35
39
  for (const factKey of factKeys) {
36
40
  // Find the first ancestor node with a matching fact key (via modifySet or modifyUnset) by traversing the graph backwards via the parent edges
37
41
  const depNode = (() => {
38
- let currentSeqNumStr = EventSequenceNumber.toString(node.seqNum)
42
+ let currentSeqNumStr = EventSequenceNumber.Client.toString(node.seqNum)
39
43
 
40
- while (currentSeqNumStr !== EventSequenceNumber.toString(rootParentNum)) {
44
+ while (currentSeqNumStr !== EventSequenceNumber.Client.toString(rootParentNum)) {
41
45
  const parentEdge = dag.inEdges(currentSeqNumStr).find((e) => dag.getEdgeAttribute(e, 'type') === 'parent')
42
46
  if (!parentEdge) return null
43
47
 
@@ -55,8 +59,8 @@ export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skip
55
59
  })()
56
60
 
57
61
  if (depNode) {
58
- const depNodeIdStr = EventSequenceNumber.toString(depNode.seqNum)
59
- const nodeIdStr = EventSequenceNumber.toString(node.seqNum)
62
+ const depNodeIdStr = EventSequenceNumber.Client.toString(depNode.seqNum)
63
+ const nodeIdStr = EventSequenceNumber.Client.toString(node.seqNum)
60
64
  if (dag.edges(depNodeIdStr, nodeIdStr).filter((e) => dag.getEdgeAttributes(e).type === 'facts').length === 0) {
61
65
  dag.addEdge(depNodeIdStr, nodeIdStr, { type: 'facts' })
62
66
  }
@@ -1,6 +1,6 @@
1
- import type { EventDef, EventDefFactsSnapshot } from '../../schema/EventDef.ts'
2
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
3
- import type * as LiveStoreEvent from '../../schema/LiveStoreEvent.ts'
1
+ import type { EventDef, EventDefFactsSnapshot } from '../../schema/EventDef/mod.ts'
2
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber/mod.ts'
3
+ import type * as LiveStoreEvent from '../../schema/LiveStoreEvent/mod.ts'
4
4
  import {
5
5
  applyFactGroups,
6
6
  type FactValidationResult,
@@ -19,13 +19,13 @@ export type RebaseInput = {
19
19
  newRemoteEvents: RebaseEventWithConflict[]
20
20
  pendingLocalEvents: RebaseEventWithConflict[]
21
21
  validate: (args: {
22
- rebasedLocalEvents: LiveStoreEvent.PartialAnyDecoded[]
22
+ rebasedLocalEvents: LiveStoreEvent.Input.Decoded[]
23
23
  eventDefs: Record<string, EventDef.Any>
24
24
  }) => FactValidationResult
25
25
  }
26
26
 
27
27
  export type RebaseOutput = {
28
- rebasedLocalEvents: LiveStoreEvent.PartialAnyDecoded[]
28
+ rebasedLocalEvents: LiveStoreEvent.Input.Decoded[]
29
29
  }
30
30
 
31
31
  export type RebaseFn = (input: RebaseInput) => RebaseOutput
@@ -53,7 +53,7 @@ export const rebaseEvents = ({
53
53
  currentFactsSnapshot: EventDefFactsSnapshot
54
54
  clientId: string
55
55
  sessionId: string
56
- }): ReadonlyArray<LiveStoreEvent.AnyDecoded> => {
56
+ }): ReadonlyArray<LiveStoreEvent.Client.Decoded> => {
57
57
  const initialSnapshot = new Map(currentFactsSnapshot)
58
58
  applyFactGroups(
59
59
  newRemoteEvents.map((event) => event.factsGroup),
@@ -94,18 +94,18 @@ export const rebaseEvents = ({
94
94
  return rebasedLocalEvents.map(
95
95
  (event, index) =>
96
96
  ({
97
- seqNum: EventSequenceNumber.make({
97
+ seqNum: EventSequenceNumber.Client.Composite.make({
98
98
  global: headGlobalId + index + 1,
99
- client: EventSequenceNumber.clientDefault,
99
+ client: EventSequenceNumber.Client.DEFAULT,
100
100
  }),
101
- parentSeqNum: EventSequenceNumber.make({
101
+ parentSeqNum: EventSequenceNumber.Client.Composite.make({
102
102
  global: headGlobalId + index,
103
- client: EventSequenceNumber.clientDefault,
103
+ client: EventSequenceNumber.Client.DEFAULT,
104
104
  }),
105
105
  name: event.name,
106
106
  args: event.args,
107
107
  clientId,
108
108
  sessionId,
109
- }) satisfies LiveStoreEvent.AnyDecoded,
109
+ }) satisfies LiveStoreEvent.Client.Decoded,
110
110
  )
111
111
  }
@@ -1,16 +1,16 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
 
3
- import type { EventDef } from '../../../schema/EventDef.ts'
4
- import { defineEvent, defineFacts } from '../../../schema/EventDef.ts'
5
- import * as EventSequenceNumber from '../../../schema/EventSequenceNumber.ts'
3
+ import type { EventDef } from '../../../schema/EventDef/mod.ts'
4
+ import { defineEvent, defineFacts } from '../../../schema/EventDef/mod.ts'
5
+ import * as EventSequenceNumber from '../../../schema/EventSequenceNumber/mod.ts'
6
6
  import { factsSnapshotForDag, getFactsGroupForEventArgs } from '../facts.ts'
7
7
  import { historyDagFromNodes } from '../history-dag.ts'
8
8
  import type { HistoryDagNode } from '../history-dag-common.ts'
9
9
  import { rootEventNode } from '../history-dag-common.ts'
10
10
 
11
11
  export const printEvent = ({ seqNum, parentSeqNum, factsGroup, ...rest }: HistoryDagNode) => ({
12
- seqNum: EventSequenceNumber.toString(seqNum),
13
- parentSeqNum: EventSequenceNumber.toString(parentSeqNum),
12
+ seqNum: EventSequenceNumber.Client.toString(seqNum),
13
+ parentSeqNum: EventSequenceNumber.Client.toString(parentSeqNum),
14
14
  ...rest,
15
15
  facts: factsGroup,
16
16
  })
@@ -140,11 +140,11 @@ export const toEventNodes = (
140
140
  ): HistoryDagNode[] => {
141
141
  const nodesAcc: HistoryDagNode[] = [rootEventNode]
142
142
 
143
- let currentEventSequenceNumber: EventSequenceNumber.EventSequenceNumber = EventSequenceNumber.ROOT
143
+ let currentEventSequenceNumber: EventSequenceNumber.Client.Composite = EventSequenceNumber.Client.ROOT
144
144
 
145
145
  const eventNodes = partialEvents.map((partialEvent) => {
146
146
  const eventDef = eventDefs[partialEvent.name]!
147
- const eventNum = EventSequenceNumber.nextPair({
147
+ const eventNum = EventSequenceNumber.Client.nextPair({
148
148
  seqNum: currentEventSequenceNumber,
149
149
  isClient: eventDef.options.clientOnly,
150
150
  }).seqNum
@@ -219,18 +219,18 @@ export const toEventNodes = (
219
219
  return eventNodes
220
220
  }
221
221
 
222
- const getParentNum = (eventNum: EventSequenceNumber.EventSequenceNumber): EventSequenceNumber.EventSequenceNumber => {
222
+ const getParentNum = (eventNum: EventSequenceNumber.Client.Composite): EventSequenceNumber.Client.Composite => {
223
223
  const globalParentNum = eventNum.global
224
224
  const clientParentNum = eventNum.client - 1
225
225
 
226
226
  if (clientParentNum < 0) {
227
- return EventSequenceNumber.make({
227
+ return EventSequenceNumber.Client.Composite.make({
228
228
  global: globalParentNum - 1,
229
- client: EventSequenceNumber.clientDefault,
229
+ client: EventSequenceNumber.Client.DEFAULT,
230
230
  })
231
231
  }
232
232
 
233
- return EventSequenceNumber.make({
233
+ return EventSequenceNumber.Client.Composite.make({
234
234
  global: globalParentNum,
235
235
  client: clientParentNum,
236
236
  })
@@ -1,11 +1,11 @@
1
1
  import { Effect, KeyValueStore, Option } from '@livestore/utils/effect'
2
- import { UnexpectedError } from '../errors.ts'
2
+ import { UnknownError } from '../errors.ts'
3
3
 
4
4
  export const makeBackendIdHelper = Effect.gen(function* () {
5
5
  const kv = yield* KeyValueStore.KeyValueStore
6
6
 
7
7
  const backendIdKey = `backendId`
8
- const backendIdRef = { current: yield* kv.get(backendIdKey).pipe(UnexpectedError.mapToUnexpectedError) }
8
+ const backendIdRef = { current: yield* kv.get(backendIdKey).pipe(UnknownError.mapToUnknownError) }
9
9
 
10
10
  const setBackendId = (backendId: string) =>
11
11
  Effect.gen(function* () {
@@ -13,7 +13,7 @@ export const makeBackendIdHelper = Effect.gen(function* () {
13
13
  backendIdRef.current = Option.some(backendId)
14
14
  yield* kv.set(backendIdKey, backendId)
15
15
  }
16
- }).pipe(UnexpectedError.mapToUnexpectedError)
16
+ }).pipe(UnknownError.mapToUnknownError)
17
17
 
18
18
  return {
19
19
  lazySet: setBackendId,
@@ -9,8 +9,8 @@ import {
9
9
  type Stream,
10
10
  type SubscriptionRef,
11
11
  } from '@livestore/utils/effect'
12
- import type { UnexpectedError } from '../adapter-types.ts'
13
- import type * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
12
+ import type { UnknownError } from '../adapter-types.ts'
13
+ import type * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
14
14
  import type { EventSequenceNumber } from '../schema/mod.ts'
15
15
  import type { InvalidPullError, InvalidPushError, IsOfflineError } from './errors.ts'
16
16
 
@@ -30,7 +30,7 @@ export type SyncBackendConstructor<TSyncMetadata = Schema.JsonValue, TPayload =
30
30
  args: MakeBackendArgs<TPayload>,
31
31
  ) => Effect.Effect<
32
32
  SyncBackend<TSyncMetadata>,
33
- UnexpectedError,
33
+ UnknownError,
34
34
  Scope.Scope | HttpClient.HttpClient | KeyValueStore.KeyValueStore
35
35
  >
36
36
 
@@ -45,10 +45,10 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
45
45
  /**
46
46
  * Can be implemented to prepare a connection to the sync backend to speed up the first pull/push.
47
47
  */
48
- connect: Effect.Effect<void, IsOfflineError | UnexpectedError, Scope.Scope>
48
+ connect: Effect.Effect<void, IsOfflineError | UnknownError, Scope.Scope>
49
49
  pull: (
50
50
  cursor: Option.Option<{
51
- eventSequenceNumber: EventSequenceNumber.GlobalEventSequenceNumber
51
+ eventSequenceNumber: EventSequenceNumber.Global.Type
52
52
  /** Metadata is needed by some sync backends */
53
53
  metadata: Option.Option<TSyncMetadata>
54
54
  }>,
@@ -68,9 +68,9 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
68
68
  * - Number of events: 1-100
69
69
  * - sequence numbers must be in ascending order
70
70
  * */
71
- batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>,
71
+ batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>,
72
72
  ) => Effect.Effect<void, IsOfflineError | InvalidPushError>
73
- ping: Effect.Effect<void, IsOfflineError | UnexpectedError | Cause.TimeoutException>
73
+ ping: Effect.Effect<void, IsOfflineError | UnknownError | Cause.TimeoutException>
74
74
  // TODO also expose latency information additionally to whether the backend is connected
75
75
  isConnected: SubscriptionRef.SubscriptionRef<boolean>
76
76
  /**
@@ -160,7 +160,7 @@ export const pullResItemEmpty = <TSyncMetadata = Schema.JsonValue>(): PullResIte
160
160
 
161
161
  export interface PullResItem<TSyncMetadata = Schema.JsonValue> {
162
162
  batch: ReadonlyArray<{
163
- eventEncoded: LiveStoreEvent.AnyEncodedGlobal
163
+ eventEncoded: LiveStoreEvent.Global.Encoded
164
164
  metadata: Option.Option<TSyncMetadata>
165
165
  }>
166
166
  pageInfo: PullResPageInfo
@@ -174,7 +174,7 @@ export const of = <TSyncMetadata = Schema.JsonValue>(obj: SyncBackend<TSyncMetad
174
174
  export const cursorFromPullResItem = <TSyncMetadata = Schema.JsonValue>(
175
175
  item: PullResItem<TSyncMetadata>,
176
176
  ): Option.Option<{
177
- eventSequenceNumber: EventSequenceNumber.GlobalEventSequenceNumber
177
+ eventSequenceNumber: EventSequenceNumber.Global.Type
178
178
  metadata: Option.Option<TSyncMetadata>
179
179
  }> => {
180
180
  const lastEvent = item.batch.at(-1)