@livestore/common 0.4.0-dev.9 → 0.5.0-dev.0

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 (580) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +27 -12
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
  5. package/dist/MaterializationJournal.d.ts +44 -0
  6. package/dist/MaterializationJournal.d.ts.map +1 -0
  7. package/dist/MaterializationJournal.js +112 -0
  8. package/dist/MaterializationJournal.js.map +1 -0
  9. package/dist/StateHead.d.ts +26 -0
  10. package/dist/StateHead.d.ts.map +1 -0
  11. package/dist/StateHead.js +50 -0
  12. package/dist/StateHead.js.map +1 -0
  13. package/dist/WorkerTransportError.d.ts +11 -0
  14. package/dist/WorkerTransportError.d.ts.map +1 -0
  15. package/dist/WorkerTransportError.js +11 -0
  16. package/dist/WorkerTransportError.js.map +1 -0
  17. package/dist/__tests__/fixture.d.ts +1 -1
  18. package/dist/__tests__/fixture.d.ts.map +1 -1
  19. package/dist/__tests__/fixture.js +3 -3
  20. package/dist/__tests__/fixture.js.map +1 -1
  21. package/dist/adapter-types.d.ts +59 -57
  22. package/dist/adapter-types.d.ts.map +1 -1
  23. package/dist/adapter-types.js +31 -22
  24. package/dist/adapter-types.js.map +1 -1
  25. package/dist/bounded-collections.d.ts.map +1 -1
  26. package/dist/bounded-collections.js +6 -4
  27. package/dist/bounded-collections.js.map +1 -1
  28. package/dist/debug-info.d.ts +56 -56
  29. package/dist/debug-info.d.ts.map +1 -1
  30. package/dist/debug-info.js +46 -32
  31. package/dist/debug-info.js.map +1 -1
  32. package/dist/defs.d.ts +9 -9
  33. package/dist/defs.js +2 -2
  34. package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
  35. package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
  36. package/dist/devtools/devtools-compatibility.test.js +16 -0
  37. package/dist/devtools/devtools-compatibility.test.js.map +1 -0
  38. package/dist/devtools/devtools-messages-client-session.d.ts +531 -312
  39. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  40. package/dist/devtools/devtools-messages-client-session.js +86 -67
  41. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  42. package/dist/devtools/devtools-messages-common.d.ts +32 -35
  43. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  44. package/dist/devtools/devtools-messages-common.js +12 -14
  45. package/dist/devtools/devtools-messages-common.js.map +1 -1
  46. package/dist/devtools/devtools-messages-leader.d.ts +417 -320
  47. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  48. package/dist/devtools/devtools-messages-leader.js +117 -87
  49. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  50. package/dist/devtools/devtools-sessioninfo.d.ts +28 -17
  51. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  52. package/dist/devtools/devtools-sessioninfo.js +12 -6
  53. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  54. package/dist/devtools/mod.d.ts +17 -7
  55. package/dist/devtools/mod.d.ts.map +1 -1
  56. package/dist/devtools/mod.js +19 -8
  57. package/dist/devtools/mod.js.map +1 -1
  58. package/dist/errors.d.ts +52 -46
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +31 -21
  61. package/dist/errors.js.map +1 -1
  62. package/dist/index.d.ts +7 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/leader-thread/LeaderSyncProcessor.d.ts +116 -21
  67. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  68. package/dist/leader-thread/LeaderSyncProcessor.js +596 -470
  69. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  70. package/dist/leader-thread/RejectedPushError.d.ts +138 -0
  71. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
  72. package/dist/leader-thread/RejectedPushError.js +97 -0
  73. package/dist/leader-thread/RejectedPushError.js.map +1 -0
  74. package/dist/leader-thread/connection.d.ts +1 -0
  75. package/dist/leader-thread/connection.d.ts.map +1 -1
  76. package/dist/leader-thread/connection.js +10 -9
  77. package/dist/leader-thread/connection.js.map +1 -1
  78. package/dist/leader-thread/eventlog.d.ts +20 -15
  79. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  80. package/dist/leader-thread/eventlog.js +80 -20
  81. package/dist/leader-thread/eventlog.js.map +1 -1
  82. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
  83. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  84. package/dist/leader-thread/leader-worker-devtools.js +110 -62
  85. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  86. package/dist/leader-thread/make-leader-thread-layer.d.ts +19 -7
  87. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  88. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  89. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  90. package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
  91. package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
  92. package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
  93. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
  94. package/dist/leader-thread/materialize-event.d.ts +3 -2
  95. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  96. package/dist/leader-thread/materialize-event.js +32 -9
  97. package/dist/leader-thread/materialize-event.js.map +1 -1
  98. package/dist/leader-thread/mod.d.ts +1 -0
  99. package/dist/leader-thread/mod.d.ts.map +1 -1
  100. package/dist/leader-thread/mod.js +1 -0
  101. package/dist/leader-thread/mod.js.map +1 -1
  102. package/dist/leader-thread/recreate-db.d.ts +2 -2
  103. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  104. package/dist/leader-thread/recreate-db.js +19 -40
  105. package/dist/leader-thread/recreate-db.js.map +1 -1
  106. package/dist/leader-thread/shutdown-channel.d.ts +3 -7
  107. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  108. package/dist/leader-thread/shutdown-channel.js +2 -3
  109. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  110. package/dist/leader-thread/stream-events.d.ts +53 -0
  111. package/dist/leader-thread/stream-events.d.ts.map +1 -0
  112. package/dist/leader-thread/stream-events.js +164 -0
  113. package/dist/leader-thread/stream-events.js.map +1 -0
  114. package/dist/leader-thread/types.d.ts +92 -51
  115. package/dist/leader-thread/types.d.ts.map +1 -1
  116. package/dist/leader-thread/types.js +17 -4
  117. package/dist/leader-thread/types.js.map +1 -1
  118. package/dist/logging.d.ts +15 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +2 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/make-client-session.d.ts +6 -5
  123. package/dist/make-client-session.d.ts.map +1 -1
  124. package/dist/make-client-session.js +10 -7
  125. package/dist/make-client-session.js.map +1 -1
  126. package/dist/materializer-helper.d.ts +6 -7
  127. package/dist/materializer-helper.d.ts.map +1 -1
  128. package/dist/materializer-helper.js +22 -40
  129. package/dist/materializer-helper.js.map +1 -1
  130. package/dist/otel.d.ts +4 -4
  131. package/dist/otel.d.ts.map +1 -1
  132. package/dist/otel.js +8 -8
  133. package/dist/otel.js.map +1 -1
  134. package/dist/rematerialize-from-eventlog.d.ts +3 -3
  135. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  136. package/dist/rematerialize-from-eventlog.js +52 -39
  137. package/dist/rematerialize-from-eventlog.js.map +1 -1
  138. package/dist/schema/EventDef/define.d.ts +161 -0
  139. package/dist/schema/EventDef/define.d.ts.map +1 -0
  140. package/dist/schema/EventDef/define.js +140 -0
  141. package/dist/schema/EventDef/define.js.map +1 -0
  142. package/dist/schema/EventDef/define.test.d.ts +2 -0
  143. package/dist/schema/EventDef/define.test.d.ts.map +1 -0
  144. package/dist/schema/EventDef/define.test.js +23 -0
  145. package/dist/schema/EventDef/define.test.js.map +1 -0
  146. package/dist/schema/EventDef/deprecated.d.ts +94 -0
  147. package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
  148. package/dist/schema/EventDef/deprecated.js +143 -0
  149. package/dist/schema/EventDef/deprecated.js.map +1 -0
  150. package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
  151. package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
  152. package/dist/schema/EventDef/deprecated.test.js +95 -0
  153. package/dist/schema/EventDef/deprecated.test.js.map +1 -0
  154. package/dist/schema/EventDef/event-def.d.ts +110 -0
  155. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  156. package/dist/schema/EventDef/event-def.js +2 -0
  157. package/dist/schema/EventDef/event-def.js.map +1 -0
  158. package/dist/schema/EventDef/facts.d.ts +118 -0
  159. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  160. package/dist/schema/EventDef/facts.js +53 -0
  161. package/dist/schema/EventDef/facts.js.map +1 -0
  162. package/dist/schema/EventDef/materializer.d.ts +155 -0
  163. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  164. package/dist/schema/EventDef/materializer.js +83 -0
  165. package/dist/schema/EventDef/materializer.js.map +1 -0
  166. package/dist/schema/EventDef/mod.d.ts +6 -0
  167. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  168. package/dist/schema/EventDef/mod.js +6 -0
  169. package/dist/schema/EventDef/mod.js.map +1 -0
  170. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  171. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  172. package/dist/schema/EventSequenceNumber/client.js +192 -0
  173. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  174. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  175. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  176. package/dist/schema/EventSequenceNumber/global.js +14 -0
  177. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  178. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  179. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  180. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  181. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  182. package/dist/schema/EventSequenceNumber.test.js +44 -44
  183. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  184. package/dist/schema/LiveStoreEvent/client.d.ts +168 -0
  185. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  186. package/dist/schema/LiveStoreEvent/client.js +179 -0
  187. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  188. package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
  189. package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
  190. package/dist/schema/LiveStoreEvent/client.test.js +120 -0
  191. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
  192. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  193. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  194. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  195. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  196. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  197. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  198. package/dist/schema/LiveStoreEvent/global.js +31 -0
  199. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  200. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  201. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  202. package/dist/schema/LiveStoreEvent/input.js +26 -0
  203. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  204. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  205. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  206. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  207. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  208. package/dist/schema/events.d.ts +1 -1
  209. package/dist/schema/events.d.ts.map +1 -1
  210. package/dist/schema/events.js +1 -1
  211. package/dist/schema/events.js.map +1 -1
  212. package/dist/schema/mod.d.ts +7 -4
  213. package/dist/schema/mod.d.ts.map +1 -1
  214. package/dist/schema/mod.js +6 -4
  215. package/dist/schema/mod.js.map +1 -1
  216. package/dist/schema/schema.d.ts +16 -1
  217. package/dist/schema/schema.d.ts.map +1 -1
  218. package/dist/schema/schema.js +34 -5
  219. package/dist/schema/schema.js.map +1 -1
  220. package/dist/schema/state/sqlite/client-document-def.d.ts +14 -18
  221. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  222. package/dist/schema/state/sqlite/client-document-def.js +54 -30
  223. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  224. package/dist/schema/state/sqlite/client-document-def.test.js +146 -6
  225. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  226. package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
  227. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  228. package/dist/schema/state/sqlite/column-annotations.js +13 -15
  229. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  230. package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
  231. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  232. package/dist/schema/state/sqlite/column-def.d.ts +1 -1
  233. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  234. package/dist/schema/state/sqlite/column-def.js +132 -57
  235. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  236. package/dist/schema/state/sqlite/column-def.test.js +155 -70
  237. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  238. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  239. package/dist/schema/state/sqlite/column-spec.js +30 -12
  240. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  241. package/dist/schema/state/sqlite/column-spec.test.js +26 -17
  242. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  243. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
  244. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  245. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +15 -6
  246. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  247. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +25 -19
  248. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  249. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +22 -16
  250. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  251. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +28 -17
  252. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  253. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +14 -12
  254. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  255. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
  256. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  257. package/dist/schema/state/sqlite/mod.d.ts +3 -5
  258. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  259. package/dist/schema/state/sqlite/mod.js +6 -8
  260. package/dist/schema/state/sqlite/mod.js.map +1 -1
  261. package/dist/schema/state/sqlite/persistence.d.ts +11 -0
  262. package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
  263. package/dist/schema/state/sqlite/persistence.js +10 -0
  264. package/dist/schema/state/sqlite/persistence.js.map +1 -0
  265. package/dist/schema/state/sqlite/query-builder/api.d.ts +58 -29
  266. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  267. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  268. package/dist/schema/state/sqlite/query-builder/astToSql.js +105 -24
  269. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  270. package/dist/schema/state/sqlite/query-builder/impl.d.ts +4 -2
  271. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  272. package/dist/schema/state/sqlite/query-builder/impl.js +42 -27
  273. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  274. package/dist/schema/state/sqlite/query-builder/impl.test.js +402 -498
  275. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  276. package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
  277. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  278. package/dist/schema/state/sqlite/schema-helpers.js +24 -14
  279. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  280. package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
  281. package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
  282. package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
  283. package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
  284. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +515 -0
  285. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  286. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  287. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  288. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  289. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  290. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  291. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  292. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +678 -0
  293. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  294. package/dist/schema/state/sqlite/system-tables/state-tables.js +87 -0
  295. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  296. package/dist/schema/state/sqlite/table-def.d.ts +19 -20
  297. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  298. package/dist/schema/state/sqlite/table-def.js +54 -4
  299. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  300. package/dist/schema/state/sqlite/table-def.test.js +226 -20
  301. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  302. package/dist/schema/unknown-events.d.ts +47 -0
  303. package/dist/schema/unknown-events.d.ts.map +1 -0
  304. package/dist/schema/unknown-events.js +70 -0
  305. package/dist/schema/unknown-events.js.map +1 -0
  306. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
  307. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
  308. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
  309. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
  310. package/dist/schema-management/common.js +2 -2
  311. package/dist/schema-management/common.js.map +1 -1
  312. package/dist/schema-management/migrations.d.ts +32 -2
  313. package/dist/schema-management/migrations.d.ts.map +1 -1
  314. package/dist/schema-management/migrations.js +38 -6
  315. package/dist/schema-management/migrations.js.map +1 -1
  316. package/dist/schema-management/validate-schema.d.ts +3 -3
  317. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  318. package/dist/schema-management/validate-schema.js +2 -2
  319. package/dist/schema-management/validate-schema.js.map +1 -1
  320. package/dist/session-id-symbol.d.ts +29 -0
  321. package/dist/session-id-symbol.d.ts.map +1 -0
  322. package/dist/session-id-symbol.js +44 -0
  323. package/dist/session-id-symbol.js.map +1 -0
  324. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  325. package/dist/sql-queries/sql-queries.js +26 -16
  326. package/dist/sql-queries/sql-queries.js.map +1 -1
  327. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  328. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  329. package/dist/sql-queries/types.d.ts +6 -7
  330. package/dist/sql-queries/types.d.ts.map +1 -1
  331. package/dist/sql-queries/types.js.map +1 -1
  332. package/dist/sqlite-db-helper.d.ts +21 -1
  333. package/dist/sqlite-db-helper.d.ts.map +1 -1
  334. package/dist/sqlite-db-helper.js +40 -5
  335. package/dist/sqlite-db-helper.js.map +1 -1
  336. package/dist/sqlite-types.d.ts +8 -11
  337. package/dist/sqlite-types.d.ts.map +1 -1
  338. package/dist/sqlite-types.js +3 -3
  339. package/dist/sqlite-types.js.map +1 -1
  340. package/dist/sync/ClientSessionSyncProcessor.d.ts +47 -25
  341. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  342. package/dist/sync/ClientSessionSyncProcessor.js +269 -154
  343. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  344. package/dist/sync/errors.d.ts +12 -51
  345. package/dist/sync/errors.d.ts.map +1 -1
  346. package/dist/sync/errors.js +7 -24
  347. package/dist/sync/errors.js.map +1 -1
  348. package/dist/sync/index.d.ts +2 -0
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +2 -0
  351. package/dist/sync/index.js.map +1 -1
  352. package/dist/sync/mock-sync-backend.d.ts +11 -10
  353. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  354. package/dist/sync/mock-sync-backend.js +97 -74
  355. package/dist/sync/mock-sync-backend.js.map +1 -1
  356. package/dist/sync/mock-sync-backend.test.d.ts +2 -0
  357. package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
  358. package/dist/sync/mock-sync-backend.test.js +49 -0
  359. package/dist/sync/mock-sync-backend.test.js.map +1 -0
  360. package/dist/sync/next/compact-events.d.ts.map +1 -1
  361. package/dist/sync/next/compact-events.js +11 -12
  362. package/dist/sync/next/compact-events.js.map +1 -1
  363. package/dist/sync/next/facts.d.ts +5 -5
  364. package/dist/sync/next/facts.d.ts.map +1 -1
  365. package/dist/sync/next/facts.js +7 -8
  366. package/dist/sync/next/facts.js.map +1 -1
  367. package/dist/sync/next/history-dag-common.d.ts +58 -15
  368. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  369. package/dist/sync/next/history-dag-common.js +219 -9
  370. package/dist/sync/next/history-dag-common.js.map +1 -1
  371. package/dist/sync/next/history-dag.d.ts.map +1 -1
  372. package/dist/sync/next/history-dag.js +12 -11
  373. package/dist/sync/next/history-dag.js.map +1 -1
  374. package/dist/sync/next/rebase-events.d.ts +5 -5
  375. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  376. package/dist/sync/next/rebase-events.js +6 -6
  377. package/dist/sync/next/rebase-events.js.map +1 -1
  378. package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
  379. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  380. package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
  381. package/dist/sync/next/test/compact-events.test.js +2 -2
  382. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  383. package/dist/sync/next/test/event-fixtures.d.ts +9 -9
  384. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  385. package/dist/sync/next/test/event-fixtures.js +12 -12
  386. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  387. package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
  388. package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
  389. package/dist/sync/next/test/history-dag-common.test.js +73 -0
  390. package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
  391. package/dist/sync/sync-backend-kv.d.ts +3 -3
  392. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  393. package/dist/sync/sync-backend-kv.js +6 -4
  394. package/dist/sync/sync-backend-kv.js.map +1 -1
  395. package/dist/sync/sync-backend.d.ts +41 -21
  396. package/dist/sync/sync-backend.d.ts.map +1 -1
  397. package/dist/sync/sync-backend.js +45 -4
  398. package/dist/sync/sync-backend.js.map +1 -1
  399. package/dist/sync/sync.d.ts +23 -2
  400. package/dist/sync/sync.d.ts.map +1 -1
  401. package/dist/sync/syncstate.d.ts +115 -191
  402. package/dist/sync/syncstate.d.ts.map +1 -1
  403. package/dist/sync/syncstate.js +108 -129
  404. package/dist/sync/syncstate.js.map +1 -1
  405. package/dist/sync/syncstate.test.js +289 -161
  406. package/dist/sync/syncstate.test.js.map +1 -1
  407. package/dist/sync/transport-chunking.d.ts +35 -0
  408. package/dist/sync/transport-chunking.d.ts.map +1 -0
  409. package/dist/sync/transport-chunking.js +47 -0
  410. package/dist/sync/transport-chunking.js.map +1 -0
  411. package/dist/sync/validate-push-payload.d.ts +2 -2
  412. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  413. package/dist/sync/validate-push-payload.js +4 -6
  414. package/dist/sync/validate-push-payload.js.map +1 -1
  415. package/dist/testing/event-factory.d.ts +3 -3
  416. package/dist/testing/event-factory.d.ts.map +1 -1
  417. package/dist/testing/event-factory.js +5 -7
  418. package/dist/testing/event-factory.js.map +1 -1
  419. package/dist/util.d.ts +11 -4
  420. package/dist/util.d.ts.map +1 -1
  421. package/dist/util.js +21 -4
  422. package/dist/util.js.map +1 -1
  423. package/dist/version.d.ts +24 -5
  424. package/dist/version.d.ts.map +1 -1
  425. package/dist/version.js +25 -8
  426. package/dist/version.js.map +1 -1
  427. package/package.json +50 -16
  428. package/src/ClientSessionLeaderThreadProxy.ts +27 -12
  429. package/src/MaterializationJournal.ts +184 -0
  430. package/src/StateHead.ts +80 -0
  431. package/src/WorkerTransportError.ts +12 -0
  432. package/src/__tests__/fixture.ts +3 -3
  433. package/src/adapter-types.ts +62 -56
  434. package/src/bounded-collections.ts +6 -5
  435. package/src/debug-info.ts +54 -43
  436. package/src/defs.ts +2 -2
  437. package/src/devtools/devtools-compatibility.test.ts +19 -0
  438. package/src/devtools/devtools-messages-client-session.ts +72 -63
  439. package/src/devtools/devtools-messages-common.ts +18 -22
  440. package/src/devtools/devtools-messages-leader.ts +89 -68
  441. package/src/devtools/devtools-sessioninfo.ts +17 -12
  442. package/src/devtools/mod.ts +15 -7
  443. package/src/errors.ts +58 -38
  444. package/src/index.ts +11 -1
  445. package/src/leader-thread/LeaderSyncProcessor.ts +927 -674
  446. package/src/leader-thread/RejectedPushError.ts +119 -0
  447. package/src/leader-thread/connection.ts +13 -9
  448. package/src/leader-thread/eventlog.ts +114 -41
  449. package/src/leader-thread/leader-worker-devtools.ts +223 -124
  450. package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
  451. package/src/leader-thread/make-leader-thread-layer.ts +170 -82
  452. package/src/leader-thread/materialize-event.ts +51 -16
  453. package/src/leader-thread/mod.ts +1 -0
  454. package/src/leader-thread/recreate-db.ts +26 -61
  455. package/src/leader-thread/shutdown-channel.ts +3 -18
  456. package/src/leader-thread/stream-events.ts +209 -0
  457. package/src/leader-thread/types.ts +77 -65
  458. package/src/logging.ts +15 -0
  459. package/src/make-client-session.ts +16 -10
  460. package/src/materializer-helper.ts +31 -49
  461. package/src/otel.ts +15 -13
  462. package/src/rematerialize-from-eventlog.ts +106 -93
  463. package/src/schema/EventDef/define.test.ts +28 -0
  464. package/src/schema/EventDef/define.ts +218 -0
  465. package/src/schema/EventDef/deprecated.test.ts +122 -0
  466. package/src/schema/EventDef/deprecated.ts +172 -0
  467. package/src/schema/EventDef/event-def.ts +123 -0
  468. package/src/schema/EventDef/facts.ts +135 -0
  469. package/src/schema/EventDef/materializer.ts +172 -0
  470. package/src/schema/EventDef/mod.ts +5 -0
  471. package/src/schema/EventSequenceNumber/client.ts +256 -0
  472. package/src/schema/EventSequenceNumber/global.ts +19 -0
  473. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  474. package/src/schema/EventSequenceNumber.test.ts +72 -53
  475. package/src/schema/LiveStoreEvent/client.test.ts +142 -0
  476. package/src/schema/LiveStoreEvent/client.ts +236 -0
  477. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  478. package/src/schema/LiveStoreEvent/global.ts +45 -0
  479. package/src/schema/LiveStoreEvent/input.ts +63 -0
  480. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  481. package/src/schema/events.ts +1 -1
  482. package/src/schema/mod.ts +7 -4
  483. package/src/schema/schema.ts +48 -6
  484. package/src/schema/state/sqlite/client-document-def.test.ts +172 -14
  485. package/src/schema/state/sqlite/client-document-def.ts +126 -98
  486. package/src/schema/state/sqlite/column-annotations.test.ts +27 -45
  487. package/src/schema/state/sqlite/column-annotations.ts +27 -30
  488. package/src/schema/state/sqlite/column-def.test.ts +186 -77
  489. package/src/schema/state/sqlite/column-def.ts +169 -62
  490. package/src/schema/state/sqlite/column-spec.test.ts +34 -19
  491. package/src/schema/state/sqlite/column-spec.ts +38 -11
  492. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +17 -7
  493. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
  494. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +37 -17
  495. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +65 -45
  496. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +48 -40
  497. package/src/schema/state/sqlite/mod.ts +9 -12
  498. package/src/schema/state/sqlite/persistence.ts +11 -0
  499. package/src/schema/state/sqlite/query-builder/api.ts +61 -23
  500. package/src/schema/state/sqlite/query-builder/astToSql.ts +117 -23
  501. package/src/schema/state/sqlite/query-builder/impl.test.ts +489 -551
  502. package/src/schema/state/sqlite/query-builder/impl.ts +43 -26
  503. package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
  504. package/src/schema/state/sqlite/schema-helpers.ts +30 -22
  505. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  506. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  507. package/src/schema/state/sqlite/system-tables/state-tables.ts +109 -0
  508. package/src/schema/state/sqlite/table-def.test.ts +295 -46
  509. package/src/schema/state/sqlite/table-def.ts +109 -64
  510. package/src/schema/unknown-events.ts +132 -0
  511. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
  512. package/src/schema-management/common.ts +2 -2
  513. package/src/schema-management/migrations.ts +42 -9
  514. package/src/schema-management/validate-schema.ts +3 -3
  515. package/src/session-id-symbol.ts +59 -0
  516. package/src/sql-queries/sql-queries.ts +26 -18
  517. package/src/sql-queries/sql-query-builder.ts +1 -0
  518. package/src/sql-queries/types.ts +6 -7
  519. package/src/sqlite-db-helper.ts +67 -5
  520. package/src/sqlite-types.ts +9 -11
  521. package/src/sync/ClientSessionSyncProcessor.ts +388 -194
  522. package/src/sync/errors.ts +18 -28
  523. package/src/sync/index.ts +2 -0
  524. package/src/sync/mock-sync-backend.test.ts +78 -0
  525. package/src/sync/mock-sync-backend.ts +196 -108
  526. package/src/sync/next/compact-events.ts +10 -11
  527. package/src/sync/next/facts.ts +13 -14
  528. package/src/sync/next/history-dag-common.ts +306 -26
  529. package/src/sync/next/history-dag.ts +20 -13
  530. package/src/sync/next/rebase-events.ts +12 -12
  531. package/src/sync/next/test/compact-events.calculator.test.ts +5 -4
  532. package/src/sync/next/test/compact-events.test.ts +4 -3
  533. package/src/sync/next/test/event-fixtures.ts +14 -14
  534. package/src/sync/next/test/history-dag-common.test.ts +87 -0
  535. package/src/sync/sync-backend-kv.ts +7 -4
  536. package/src/sync/sync-backend.ts +75 -26
  537. package/src/sync/sync.ts +24 -2
  538. package/src/sync/syncstate.test.ts +657 -442
  539. package/src/sync/syncstate.ts +175 -160
  540. package/src/sync/transport-chunking.ts +85 -0
  541. package/src/sync/validate-push-payload.ts +6 -8
  542. package/src/testing/event-factory.ts +10 -12
  543. package/src/util.ts +20 -11
  544. package/src/version.ts +32 -8
  545. package/dist/schema/EventDef.d.ts +0 -126
  546. package/dist/schema/EventDef.d.ts.map +0 -1
  547. package/dist/schema/EventDef.js +0 -46
  548. package/dist/schema/EventDef.js.map +0 -1
  549. package/dist/schema/EventSequenceNumber.d.ts +0 -80
  550. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  551. package/dist/schema/EventSequenceNumber.js +0 -139
  552. package/dist/schema/EventSequenceNumber.js.map +0 -1
  553. package/dist/schema/LiveStoreEvent.d.ts +0 -306
  554. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  555. package/dist/schema/LiveStoreEvent.js +0 -147
  556. package/dist/schema/LiveStoreEvent.js.map +0 -1
  557. package/dist/schema/state/sqlite/system-tables.d.ts +0 -976
  558. package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
  559. package/dist/schema/state/sqlite/system-tables.js +0 -81
  560. package/dist/schema/state/sqlite/system-tables.js.map +0 -1
  561. package/dist/sql-queries/misc.d.ts +0 -2
  562. package/dist/sql-queries/misc.d.ts.map +0 -1
  563. package/dist/sql-queries/misc.js +0 -2
  564. package/dist/sql-queries/misc.js.map +0 -1
  565. package/dist/sync/next/graphology.d.ts +0 -8
  566. package/dist/sync/next/graphology.d.ts.map +0 -1
  567. package/dist/sync/next/graphology.js +0 -30
  568. package/dist/sync/next/graphology.js.map +0 -1
  569. package/dist/sync/next/graphology_.d.ts +0 -3
  570. package/dist/sync/next/graphology_.d.ts.map +0 -1
  571. package/dist/sync/next/graphology_.js +0 -3
  572. package/dist/sync/next/graphology_.js.map +0 -1
  573. package/src/schema/EventDef.ts +0 -222
  574. package/src/schema/EventSequenceNumber.ts +0 -199
  575. package/src/schema/LiveStoreEvent.ts +0 -286
  576. package/src/schema/state/sqlite/system-tables.ts +0 -106
  577. package/src/sql-queries/misc.ts +0 -2
  578. package/src/sync/next/ambient.d.ts +0 -3
  579. package/src/sync/next/graphology.ts +0 -41
  580. package/src/sync/next/graphology_.ts +0 -2
@@ -0,0 +1,168 @@
1
+ import { Option, Schema } from '@livestore/utils/effect';
2
+ import type { EventDef } from '../EventDef/mod.ts';
3
+ import * as EventSequenceNumber from '../EventSequenceNumber/mod.ts';
4
+ import type { LiveStoreSchema } from '../schema.ts';
5
+ import type * as ForEventDef from './for-event-def.ts';
6
+ import type * as Global from './global.ts';
7
+ /** Effect Schema for client events with decoded args. */
8
+ export declare const Decoded: Schema.Struct<{
9
+ readonly name: Schema.String;
10
+ readonly args: Schema.Any;
11
+ readonly seqNum: Schema.Struct<{
12
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
13
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
14
+ readonly rebaseGeneration: Schema.Int;
15
+ }> & {
16
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
17
+ };
18
+ readonly parentSeqNum: Schema.Struct<{
19
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
20
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
21
+ readonly rebaseGeneration: Schema.Int;
22
+ }> & {
23
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
24
+ };
25
+ readonly clientId: Schema.String;
26
+ readonly sessionId: Schema.String;
27
+ }>;
28
+ /**
29
+ * Effect Schema for client events with encoded args.
30
+ * @example
31
+ * ```ts
32
+ * // Confirmed event (client=0)
33
+ * const event: LiveStoreEvent.Client.Encoded = {
34
+ * name: 'todoCreated-v1',
35
+ * args: { id: 'abc', text: 'Buy milk' },
36
+ * seqNum: { global: 5, client: 0, rebaseGeneration: 0 },
37
+ * parentSeqNum: { global: 4, client: 0, rebaseGeneration: 0 },
38
+ * clientId: 'client-xyz',
39
+ * sessionId: 'session-123'
40
+ * }
41
+ *
42
+ * // Pending local event (client=1, not yet synced)
43
+ * const pending: LiveStoreEvent.Client.Encoded = {
44
+ * ...event,
45
+ * seqNum: { global: 5, client: 1, rebaseGeneration: 0 }, // e5.1
46
+ * }
47
+ * ```
48
+ */
49
+ export declare const Encoded: Schema.Struct<{
50
+ readonly name: Schema.String;
51
+ readonly args: Schema.Any;
52
+ readonly seqNum: Schema.Struct<{
53
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
54
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
55
+ readonly rebaseGeneration: Schema.Int;
56
+ }> & {
57
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
58
+ };
59
+ readonly parentSeqNum: Schema.Struct<{
60
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
61
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
62
+ readonly rebaseGeneration: Schema.Int;
63
+ }> & {
64
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
65
+ };
66
+ readonly clientId: Schema.String;
67
+ readonly sessionId: Schema.String;
68
+ }>;
69
+ /** Event with composite sequence numbers and decoded (native TypeScript) args. */
70
+ export type Decoded = ForEventDef.Decoded<EventDef.Any>;
71
+ /** Event with composite sequence numbers and encoded (serialized) args. */
72
+ export type Encoded = ForEventDef.Encoded<EventDef.Any>;
73
+ /** Union of all client event types for a given schema (type-safe event discrimination). */
74
+ export type ForSchema<TSchema extends LiveStoreSchema> = {
75
+ [K in keyof TSchema['_EventDefMapType']]: ForEventDef.Decoded<TSchema['_EventDefMapType'][K]>;
76
+ }[keyof TSchema['_EventDefMapType']];
77
+ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, Schema.Struct<{
78
+ readonly name: Schema.String;
79
+ readonly args: Schema.Any;
80
+ readonly seqNum: Schema.Struct<{
81
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
82
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
83
+ readonly rebaseGeneration: Schema.Int;
84
+ }> & {
85
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
86
+ };
87
+ readonly parentSeqNum: Schema.Struct<{
88
+ readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
89
+ readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
90
+ readonly rebaseGeneration: Schema.Int;
91
+ }> & {
92
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
93
+ };
94
+ readonly clientId: Schema.String;
95
+ readonly sessionId: Schema.String;
96
+ readonly meta: Schema.withConstructorDefault<Schema.withDecodingDefaultType<Schema.Struct<{
97
+ readonly sessionChangeset: Schema.mutableKey<Schema.Union<readonly [Schema.TaggedStruct<"sessionChangeset", {
98
+ readonly data: Schema.Codec<Uint8Array<ArrayBuffer>>;
99
+ readonly debug: Schema.optional<Schema.Any>;
100
+ }>, Schema.TaggedStruct<"no-op", {}>, Schema.TaggedStruct<"unset", {}>]>>;
101
+ readonly syncMetadata: Schema.mutableKey<Schema.Option<Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
102
+ readonly materializerHashLeader: Schema.mutableKey<Schema.Option<Schema.Finite>>;
103
+ readonly materializerHashSession: Schema.mutableKey<Schema.Option<Schema.Finite>>;
104
+ }>, never>>;
105
+ }>, {}>;
106
+ /**
107
+ * Internal event representation with metadata for sync processing.
108
+ * Includes changeset data and materializer hashes for conflict detection and rebasing.
109
+ *
110
+ * Note: This class is exported for internal use. The preferred access is via `LiveStoreEvent.Client.EncodedWithMeta`.
111
+ */
112
+ export declare class EncodedWithMeta extends EncodedWithMeta_base {
113
+ toJSON: () => any;
114
+ /**
115
+ * Example: (global event)
116
+ * For event e2 → e1 which should be rebased on event e3 → e2
117
+ * the resulting event num will be e4 → e3
118
+ *
119
+ * Example: (client event)
120
+ * For event e2.1 → e2 which should be rebased on event e3 → e2
121
+ * the resulting event num will be e3.1 → e3
122
+ *
123
+ * Syntax: e2.2 → e2.1
124
+ * ^ ^ ^ ^
125
+ * | | | +- client parent number
126
+ * | | +--- global parent number
127
+ * | +-- client number
128
+ * +---- global number
129
+ * Client num is omitted for global events
130
+ */
131
+ rebase: ({ parentSeqNum, isClientOnly, rebaseGeneration, }: {
132
+ parentSeqNum: EventSequenceNumber.Client.Composite;
133
+ isClientOnly: boolean;
134
+ rebaseGeneration: number;
135
+ }) => EncodedWithMeta;
136
+ static fromGlobal: (event: Global.Encoded, meta: {
137
+ syncMetadata: Option.Option<Schema.Json>;
138
+ materializerHashLeader: Option.Option<number>;
139
+ materializerHashSession: Option.Option<number>;
140
+ }) => EncodedWithMeta;
141
+ toGlobal: () => Global.Encoded;
142
+ }
143
+ /**
144
+ * Structural equality check for client events. Compares seqNum (global + client),
145
+ * name, clientId, sessionId, and args. The `meta` field is ignored.
146
+ *
147
+ * Args are compared in their JSON-canonical form: locally-encoded events with
148
+ * `Schema.UndefinedOr` (or loose `Schema.optional`) fields produce
149
+ * `{ ..., flag: undefined }`, but JSON wire transport drops the key. Without
150
+ * canonicalizing, the local pending event compares unequal to its
151
+ * wire-roundtripped counterpart and the sync merge falsely takes the rebase
152
+ * path, surfacing as `MaterializerHashMismatchError` for state-dependent
153
+ * materializers.
154
+ */
155
+ export declare const isEqualEncoded: (a: Encoded, b: Encoded) => boolean;
156
+ /**
157
+ * Creates an Effect Schema union for all event types in a schema (with composite sequence numbers).
158
+ * @example
159
+ * ```ts
160
+ * const eventSchema = LiveStoreEvent.Client.makeSchema(schema)
161
+ * const event = Schema.decodeUnknownSync(eventSchema)(rawEvent)
162
+ * ```
163
+ */
164
+ export declare const makeSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
165
+ /** Memoized `makeSchema` - caches the generated schema by reference. */
166
+ export declare const makeSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
167
+ export {};
168
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAE1C,yDAAyD;AACzD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;EAOmC,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;EAOmC,CAAA;AAEvD,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAEvD,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAEvD,2FAA2F;AAC3F,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,eAAe,IAAI;KACtD,CAAC,IAAI,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9F,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;2BAmBM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;;;;;;;;AAjB/E;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,oBAyCnC;IACA,MAAM,QAAO,GAAG,CASf;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,GAAI,mDAIP;QACD,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAClD,YAAY,EAAE,OAAO,CAAA;QACrB,gBAAgB,EAAE,MAAM,CAAA;KACzB,qBAIG;IAEJ,MAAM,CAAC,UAAU,GACf,OAAO,MAAM,CAAC,OAAO,EACrB,MAAM;QACJ,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7C,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KAC/C,qBAoBC;IAEJ,QAAQ,QAAO,MAAM,CAAC,OAAO,CAO3B;CACH;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,YAMU,CAAA;AAI/D;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,eAAe,EACxD,QAAQ,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAYG,CAAA;AAEvD,wEAAwE;AACxE,eAAO,MAAM,cAAc,GAjBA,OAAO,SAAS,eAAe,UAChD,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAeE,CAAA"}
@@ -0,0 +1,179 @@
1
+ import { deepEqual, memoizeByRef } from '@livestore/utils';
2
+ import { Effect, Option, Schema, Struct } from '@livestore/utils/effect';
3
+ import * as EventSequenceNumber from "../EventSequenceNumber/mod.js";
4
+ /** Effect Schema for client events with decoded args. */
5
+ export const Decoded = Schema.Struct({
6
+ name: Schema.String,
7
+ args: Schema.Any,
8
+ seqNum: EventSequenceNumber.Client.Composite,
9
+ parentSeqNum: EventSequenceNumber.Client.Composite,
10
+ clientId: Schema.String,
11
+ sessionId: Schema.String,
12
+ }).annotate({ title: 'LiveStoreEvent.Client.Decoded' });
13
+ /**
14
+ * Effect Schema for client events with encoded args.
15
+ * @example
16
+ * ```ts
17
+ * // Confirmed event (client=0)
18
+ * const event: LiveStoreEvent.Client.Encoded = {
19
+ * name: 'todoCreated-v1',
20
+ * args: { id: 'abc', text: 'Buy milk' },
21
+ * seqNum: { global: 5, client: 0, rebaseGeneration: 0 },
22
+ * parentSeqNum: { global: 4, client: 0, rebaseGeneration: 0 },
23
+ * clientId: 'client-xyz',
24
+ * sessionId: 'session-123'
25
+ * }
26
+ *
27
+ * // Pending local event (client=1, not yet synced)
28
+ * const pending: LiveStoreEvent.Client.Encoded = {
29
+ * ...event,
30
+ * seqNum: { global: 5, client: 1, rebaseGeneration: 0 }, // e5.1
31
+ * }
32
+ * ```
33
+ */
34
+ export const Encoded = Schema.Struct({
35
+ name: Schema.String,
36
+ args: Schema.Any,
37
+ seqNum: EventSequenceNumber.Client.Composite,
38
+ parentSeqNum: EventSequenceNumber.Client.Composite,
39
+ clientId: Schema.String,
40
+ sessionId: Schema.String,
41
+ }).annotate({ title: 'LiveStoreEvent.Client.Encoded' });
42
+ /**
43
+ * Internal event representation with metadata for sync processing.
44
+ * Includes changeset data and materializer hashes for conflict detection and rebasing.
45
+ *
46
+ * Note: This class is exported for internal use. The preferred access is via `LiveStoreEvent.Client.EncodedWithMeta`.
47
+ */
48
+ export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.Client.EncodedWithMeta')({
49
+ name: Schema.String,
50
+ args: Schema.Any,
51
+ seqNum: EventSequenceNumber.Client.Composite,
52
+ parentSeqNum: EventSequenceNumber.Client.Composite,
53
+ clientId: Schema.String,
54
+ sessionId: Schema.String,
55
+ // TODO get rid of `meta` again by cleaning up the usage implementations
56
+ meta: Schema.Struct({
57
+ sessionChangeset: Schema.Union([
58
+ Schema.TaggedStruct('sessionChangeset', {
59
+ data: Schema.Uint8Array,
60
+ debug: Schema.Any.pipe(Schema.optional),
61
+ }),
62
+ Schema.TaggedStruct('no-op', {}),
63
+ Schema.TaggedStruct('unset', {}),
64
+ ]),
65
+ syncMetadata: Schema.Option(Schema.Json),
66
+ /** Used to detect if the materializer is side effecting (during dev) */
67
+ materializerHashLeader: Schema.Option(Schema.Finite),
68
+ materializerHashSession: Schema.Option(Schema.Finite),
69
+ })
70
+ .mapFields(Struct.map(Schema.mutableKey))
71
+ .pipe(Schema.withDecodingDefaultType(Effect.succeed({
72
+ sessionChangeset: { _tag: 'unset' },
73
+ syncMetadata: Option.none(),
74
+ materializerHashLeader: Option.none(),
75
+ materializerHashSession: Option.none(),
76
+ })), Schema.withConstructorDefault(Effect.succeed({
77
+ sessionChangeset: { _tag: 'unset' },
78
+ syncMetadata: Option.none(),
79
+ materializerHashLeader: Option.none(),
80
+ materializerHashSession: Option.none(),
81
+ }))),
82
+ }) {
83
+ toJSON = () => {
84
+ // Only used for logging/debugging
85
+ // - More readable way to print the seqNum + parentSeqNum
86
+ // - not including `meta`, `clientId`, `sessionId`
87
+ return {
88
+ seqNum: `${EventSequenceNumber.Client.toString(this.seqNum)} → ${EventSequenceNumber.Client.toString(this.parentSeqNum)} (${this.clientId}, ${this.sessionId})`,
89
+ name: this.name,
90
+ args: this.args,
91
+ };
92
+ };
93
+ /**
94
+ * Example: (global event)
95
+ * For event e2 → e1 which should be rebased on event e3 → e2
96
+ * the resulting event num will be e4 → e3
97
+ *
98
+ * Example: (client event)
99
+ * For event e2.1 → e2 which should be rebased on event e3 → e2
100
+ * the resulting event num will be e3.1 → e3
101
+ *
102
+ * Syntax: e2.2 → e2.1
103
+ * ^ ^ ^ ^
104
+ * | | | +- client parent number
105
+ * | | +--- global parent number
106
+ * | +-- client number
107
+ * +---- global number
108
+ * Client num is omitted for global events
109
+ */
110
+ rebase = ({ parentSeqNum, isClientOnly, rebaseGeneration, }) => new EncodedWithMeta({
111
+ ...this,
112
+ ...EventSequenceNumber.Client.nextPair({ seqNum: parentSeqNum, isClientOnly, rebaseGeneration }),
113
+ });
114
+ static fromGlobal = (event, meta) => new EncodedWithMeta({
115
+ ...event,
116
+ seqNum: {
117
+ global: event.seqNum,
118
+ client: EventSequenceNumber.Client.DEFAULT,
119
+ rebaseGeneration: EventSequenceNumber.Client.REBASE_GENERATION_DEFAULT,
120
+ },
121
+ parentSeqNum: {
122
+ global: event.parentSeqNum,
123
+ client: EventSequenceNumber.Client.DEFAULT,
124
+ rebaseGeneration: EventSequenceNumber.Client.REBASE_GENERATION_DEFAULT,
125
+ },
126
+ meta: {
127
+ sessionChangeset: { _tag: 'unset' },
128
+ syncMetadata: meta.syncMetadata,
129
+ materializerHashLeader: meta.materializerHashLeader,
130
+ materializerHashSession: meta.materializerHashSession,
131
+ },
132
+ });
133
+ toGlobal = () => ({
134
+ name: this.name,
135
+ args: this.args,
136
+ seqNum: this.seqNum.global,
137
+ parentSeqNum: this.parentSeqNum.global,
138
+ clientId: this.clientId,
139
+ sessionId: this.sessionId,
140
+ });
141
+ }
142
+ /**
143
+ * Structural equality check for client events. Compares seqNum (global + client),
144
+ * name, clientId, sessionId, and args. The `meta` field is ignored.
145
+ *
146
+ * Args are compared in their JSON-canonical form: locally-encoded events with
147
+ * `Schema.UndefinedOr` (or loose `Schema.optional`) fields produce
148
+ * `{ ..., flag: undefined }`, but JSON wire transport drops the key. Without
149
+ * canonicalizing, the local pending event compares unequal to its
150
+ * wire-roundtripped counterpart and the sync merge falsely takes the rebase
151
+ * path, surfacing as `MaterializerHashMismatchError` for state-dependent
152
+ * materializers.
153
+ */
154
+ export const isEqualEncoded = (a, b) => a.seqNum.global === b.seqNum.global &&
155
+ a.seqNum.client === b.seqNum.client &&
156
+ a.name === b.name &&
157
+ a.clientId === b.clientId &&
158
+ a.sessionId === b.sessionId &&
159
+ deepEqual(canonicalizeArgs(a.args), canonicalizeArgs(b.args)); // TODO use schema equality here
160
+ const canonicalizeArgs = (args) => (args === undefined ? args : JSON.parse(JSON.stringify(args)));
161
+ /**
162
+ * Creates an Effect Schema union for all event types in a schema (with composite sequence numbers).
163
+ * @example
164
+ * ```ts
165
+ * const eventSchema = LiveStoreEvent.Client.makeSchema(schema)
166
+ * const event = Schema.decodeUnknownSync(eventSchema)(rawEvent)
167
+ * ```
168
+ */
169
+ export const makeSchema = (schema) => Schema.Union([...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
170
+ name: Schema.Literal(def.name),
171
+ args: def.schema,
172
+ seqNum: EventSequenceNumber.Client.Composite,
173
+ parentSeqNum: EventSequenceNumber.Client.Composite,
174
+ clientId: Schema.String,
175
+ sessionId: Schema.String,
176
+ }))).annotate({ title: 'LiveStoreEvent.Client' });
177
+ /** Memoized `makeSchema` - caches the generated schema by reference. */
178
+ export const makeSchemaMemo = memoizeByRef(makeSchema);
179
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import { expect } from 'vitest';
2
+ import { Vitest } from '@livestore/utils-dev/node-vitest';
3
+ import { Option, Schema } from '@livestore/utils/effect';
4
+ import * as EventSequenceNumber from "../EventSequenceNumber/mod.js";
5
+ import { EncodedWithMeta, isEqualEncoded } from "./client.js";
6
+ Vitest.describe('EncodedWithMeta', () => {
7
+ Vitest.test('toGlobal() produces numeric seqNums through JSON.stringify', () => {
8
+ const event = new EncodedWithMeta({
9
+ name: 'test-v1',
10
+ args: { id: '1' },
11
+ seqNum: EventSequenceNumber.Client.Composite.make({ global: 5, client: 0 }),
12
+ parentSeqNum: EventSequenceNumber.Client.Composite.make({ global: 4, client: 0 }),
13
+ clientId: 'client-1',
14
+ sessionId: 'session-1',
15
+ meta: {
16
+ sessionChangeset: { _tag: 'unset' },
17
+ syncMetadata: Option.none(),
18
+ materializerHashLeader: Option.none(),
19
+ materializerHashSession: Option.none(),
20
+ },
21
+ });
22
+ const global = event.toGlobal();
23
+ const parsed = JSON.parse(JSON.stringify(global));
24
+ expect(parsed.seqNum).toBe(5);
25
+ expect(parsed.parentSeqNum).toBe(4);
26
+ });
27
+ });
28
+ Vitest.describe('isEqualEncoded', () => {
29
+ const makeEncodedEvent = (args) => ({
30
+ name: 'testEvent-v1',
31
+ args,
32
+ seqNum: EventSequenceNumber.Client.Composite.make({ global: 1, client: 0 }),
33
+ parentSeqNum: EventSequenceNumber.Client.Composite.make(EventSequenceNumber.Client.ROOT),
34
+ clientId: 'client-1',
35
+ sessionId: 'session-1',
36
+ });
37
+ Vitest.it('should consider events with identical args as equal', () => {
38
+ const a = makeEncodedEvent({ id: 'abc', text: 'hello' });
39
+ const b = makeEncodedEvent({ id: 'abc', text: 'hello' });
40
+ expect(isEqualEncoded(a, b)).toBe(true);
41
+ });
42
+ Vitest.it('should consider events with different key order in args as equal', () => {
43
+ const a = makeEncodedEvent({ b: 2, a: 1 });
44
+ const b = makeEncodedEvent({ a: 1, b: 2 });
45
+ expect(isEqualEncoded(a, b)).toBe(true);
46
+ });
47
+ Vitest.it('should consider events with different key order in nested args as equal', () => {
48
+ const a = makeEncodedEvent({ outer: { b: 2, a: 1 }, x: 'y' });
49
+ const b = makeEncodedEvent({ x: 'y', outer: { a: 1, b: 2 } });
50
+ expect(isEqualEncoded(a, b)).toBe(true);
51
+ });
52
+ Vitest.it('should consider events with different args values as not equal', () => {
53
+ const a = makeEncodedEvent({ id: 'abc' });
54
+ const b = makeEncodedEvent({ id: 'def' });
55
+ expect(isEqualEncoded(a, b)).toBe(false);
56
+ });
57
+ Vitest.it('should consider events with different args keys as not equal', () => {
58
+ const a = makeEncodedEvent({ a: 1 });
59
+ const b = makeEncodedEvent({ b: 1 });
60
+ expect(isEqualEncoded(a, b)).toBe(false);
61
+ });
62
+ Vitest.it('should handle null args', () => {
63
+ const a = makeEncodedEvent(null);
64
+ const b = makeEncodedEvent(null);
65
+ expect(isEqualEncoded(a, b)).toBe(true);
66
+ });
67
+ Vitest.it('should handle array args', () => {
68
+ const a = makeEncodedEvent([1, 2, 3]);
69
+ const b = makeEncodedEvent([1, 2, 3]);
70
+ expect(isEqualEncoded(a, b)).toBe(true);
71
+ });
72
+ Vitest.it('should handle empty object args', () => {
73
+ const a = makeEncodedEvent({});
74
+ const b = makeEncodedEvent({});
75
+ expect(isEqualEncoded(a, b)).toBe(true);
76
+ });
77
+ Vitest.it('should consider events with different names as not equal', () => {
78
+ const a = { ...makeEncodedEvent({ id: 'abc' }), name: 'eventA' };
79
+ const b = { ...makeEncodedEvent({ id: 'abc' }), name: 'eventB' };
80
+ expect(isEqualEncoded(a, b)).toBe(false);
81
+ });
82
+ Vitest.it('should consider events with undefined-valued and missing keys as equal', () => {
83
+ const a = makeEncodedEvent({ id: 'abc', flag: undefined });
84
+ const b = makeEncodedEvent({ id: 'abc' });
85
+ expect(isEqualEncoded(a, b)).toBe(true);
86
+ });
87
+ Vitest.it('should consider events with nested undefined-valued and missing keys as equal', () => {
88
+ const a = makeEncodedEvent({ outer: { x: 1, y: undefined } });
89
+ const b = makeEncodedEvent({ outer: { x: 1 } });
90
+ expect(isEqualEncoded(a, b)).toBe(true);
91
+ });
92
+ Vitest.it('should consider Effect Schema UndefinedOr-encoded args with explicit undefined equal to their JSON-roundtripped form', () => {
93
+ const argsSchema = Schema.Struct({
94
+ id: Schema.String,
95
+ flag: Schema.UndefinedOr(Schema.Boolean),
96
+ });
97
+ const localArgs = Schema.encodeUnknownSync(argsSchema)({ id: 'abc', flag: undefined });
98
+ const wireArgs = JSON.parse(JSON.stringify(localArgs));
99
+ expect(isEqualEncoded(makeEncodedEvent(localArgs), makeEncodedEvent(wireArgs))).toBe(true);
100
+ });
101
+ Vitest.it('should consider Effect Schema optionalKey-encoded args equal to their JSON-roundtripped form', () => {
102
+ const argsSchema = Schema.Struct({
103
+ id: Schema.String,
104
+ label: Schema.optionalKey(Schema.String),
105
+ });
106
+ const localArgs = Schema.encodeUnknownSync(argsSchema)({ id: 'abc' });
107
+ const wireArgs = JSON.parse(JSON.stringify(localArgs));
108
+ expect(isEqualEncoded(makeEncodedEvent(localArgs), makeEncodedEvent(wireArgs))).toBe(true);
109
+ });
110
+ Vitest.it('should consider Effect Schema loose-optional encoded args equal to their JSON-roundtripped form', () => {
111
+ const argsSchema = Schema.Struct({
112
+ id: Schema.String,
113
+ label: Schema.optional(Schema.String),
114
+ });
115
+ const localArgs = Schema.encodeUnknownSync(argsSchema)({ id: 'abc', label: undefined });
116
+ const wireArgs = JSON.parse(JSON.stringify(localArgs));
117
+ expect(isEqualEncoded(makeEncodedEvent(localArgs), makeEncodedEvent(wireArgs))).toBe(true);
118
+ });
119
+ });
120
+ //# sourceMappingURL=client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/client.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { Schema } from '@livestore/utils/effect';
2
+ import type { EventDef, EventDefRecord } from '../EventDef/mod.ts';
3
+ import type * as EventSequenceNumber from '../EventSequenceNumber/mod.ts';
4
+ /** Event without sequence numbers, with decoded (native TypeScript) args. Used as input to `store.commit()`. */
5
+ export type InputDecoded<TEventDef extends EventDef.Any> = {
6
+ name: TEventDef['name'];
7
+ args: TEventDef['schema']['Type'];
8
+ };
9
+ /** Event without sequence numbers, with encoded (serialized) args. Used as input to `store.commit()`. */
10
+ export type InputEncoded<TEventDef extends EventDef.Any> = {
11
+ name: TEventDef['name'];
12
+ args: TEventDef['schema']['Encoded'];
13
+ };
14
+ /** Full event with composite sequence numbers and decoded args. Includes clientId/sessionId for sync. */
15
+ export type Decoded<TEventDef extends EventDef.Any> = {
16
+ name: TEventDef['name'];
17
+ args: TEventDef['schema']['Type'];
18
+ seqNum: EventSequenceNumber.Client.Composite;
19
+ parentSeqNum: EventSequenceNumber.Client.Composite;
20
+ clientId: string;
21
+ sessionId: string;
22
+ };
23
+ /** Full event with composite sequence numbers and encoded args. Includes clientId/sessionId for sync. */
24
+ export type Encoded<TEventDef extends EventDef.Any> = {
25
+ name: TEventDef['name'];
26
+ args: TEventDef['schema']['Encoded'];
27
+ seqNum: EventSequenceNumber.Client.Composite;
28
+ parentSeqNum: EventSequenceNumber.Client.Composite;
29
+ clientId: string;
30
+ sessionId: string;
31
+ };
32
+ /** Effect Schema union of all event types in an EventDefRecord (with composite sequence numbers). */
33
+ export type ForRecord<TEventDefRecord extends EventDefRecord> = Schema.Codec<{
34
+ [K in keyof TEventDefRecord]: {
35
+ name: K;
36
+ args: TEventDefRecord[K]['schema']['Type'];
37
+ seqNum: EventSequenceNumber.Client.Composite;
38
+ parentSeqNum: EventSequenceNumber.Client.Composite;
39
+ clientId: string;
40
+ sessionId: string;
41
+ };
42
+ }[keyof TEventDefRecord], {
43
+ [K in keyof TEventDefRecord]: {
44
+ name: K;
45
+ args: TEventDefRecord[K]['schema']['Encoded'];
46
+ seqNum: EventSequenceNumber.Client.Composite;
47
+ parentSeqNum: EventSequenceNumber.Client.Composite;
48
+ clientId: string;
49
+ sessionId: string;
50
+ };
51
+ }[keyof TEventDefRecord]>;
52
+ //# sourceMappingURL=for-event-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"for-event-def.d.ts","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/for-event-def.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,KAAK,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AAEzE,gHAAgH;AAChH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,IAAI;IACzD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;CAClC,CAAA;AAED,yGAAyG;AACzG,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,IAAI;IACzD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;CACrC,CAAA;AAED,yGAAyG;AACzG,MAAM,MAAM,OAAO,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,IAAI;IACpD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAC5C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,yGAAyG;AACzG,MAAM,MAAM,OAAO,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,IAAI;IACpD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAC5C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qGAAqG;AACrG,MAAM,MAAM,SAAS,CAAC,eAAe,SAAS,cAAc,IAAI,MAAM,CAAC,KAAK,CAC1E;KACG,CAAC,IAAI,MAAM,eAAe,GAAG;QAC5B,IAAI,EAAE,CAAC,CAAA;QACP,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAC5C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAClD,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB;CACF,CAAC,MAAM,eAAe,CAAC,EACxB;KACG,CAAC,IAAI,MAAM,eAAe,GAAG;QAC5B,IAAI,EAAE,CAAC,CAAA;QACP,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAC5C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAClD,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB;CACF,CAAC,MAAM,eAAe,CAAC,CACzB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=for-event-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"for-event-def.js","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/for-event-def.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import * as EventSequenceNumber from '../EventSequenceNumber/mod.ts';
3
+ /**
4
+ * Effect Schema for global events with integer sequence numbers.
5
+ * @example
6
+ * ```ts
7
+ * const event: LiveStoreEvent.Global.Encoded = {
8
+ * name: 'todoCreated-v1',
9
+ * args: { id: 'abc', text: 'Buy milk' },
10
+ * seqNum: 5, // This event's position in the global log
11
+ * parentSeqNum: 4, // Points to the previous event
12
+ * clientId: 'client-xyz',
13
+ * sessionId: 'session-123'
14
+ * }
15
+ * ```
16
+ */
17
+ export declare const Encoded: Schema.Struct<{
18
+ readonly name: Schema.String;
19
+ readonly args: Schema.Any;
20
+ readonly seqNum: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
21
+ readonly parentSeqNum: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
22
+ readonly clientId: Schema.String;
23
+ readonly sessionId: Schema.String;
24
+ }>;
25
+ /** Event with integer sequence numbers for sync backend wire format. */
26
+ export type Encoded = typeof Encoded.Type;
27
+ /** Converts a Global event to Client format by expanding integer seqNums to composite form. */
28
+ export declare const toClientEncoded: (event: Encoded) => {
29
+ name: string;
30
+ args: any;
31
+ seqNum: EventSequenceNumber.Client.Composite;
32
+ parentSeqNum: EventSequenceNumber.Client.Composite;
33
+ clientId: string;
34
+ sessionId: string;
35
+ };
36
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AAEpE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO;;;;;;;EAOmC,CAAA;AAEvD,wEAAwE;AACxE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,+FAA+F;AAC/F,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,KACb;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAC5C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAKjB,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import * as EventSequenceNumber from "../EventSequenceNumber/mod.js";
3
+ /**
4
+ * Effect Schema for global events with integer sequence numbers.
5
+ * @example
6
+ * ```ts
7
+ * const event: LiveStoreEvent.Global.Encoded = {
8
+ * name: 'todoCreated-v1',
9
+ * args: { id: 'abc', text: 'Buy milk' },
10
+ * seqNum: 5, // This event's position in the global log
11
+ * parentSeqNum: 4, // Points to the previous event
12
+ * clientId: 'client-xyz',
13
+ * sessionId: 'session-123'
14
+ * }
15
+ * ```
16
+ */
17
+ export const Encoded = Schema.Struct({
18
+ name: Schema.String,
19
+ args: Schema.Any,
20
+ seqNum: EventSequenceNumber.Global.Schema,
21
+ parentSeqNum: EventSequenceNumber.Global.Schema,
22
+ clientId: Schema.String,
23
+ sessionId: Schema.String,
24
+ }).annotate({ title: 'LiveStoreEvent.Global.Encoded' });
25
+ /** Converts a Global event to Client format by expanding integer seqNums to composite form. */
26
+ export const toClientEncoded = (event) => ({
27
+ ...event,
28
+ seqNum: EventSequenceNumber.Client.fromGlobal(event.seqNum),
29
+ parentSeqNum: EventSequenceNumber.Client.fromGlobal(event.parentSeqNum),
30
+ });
31
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM;IACzC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM;IAC/C,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAA;AAKvD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAc,EAQd,EAAE,CAAC,CAAC;IACJ,GAAG,KAAK;IACR,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3D,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;CACxE,CAAC,CAAA"}