@livestore/common 0.4.0-dev.2 → 0.4.0-dev.21

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 (465) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +20 -12
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
  5. package/dist/adapter-types.d.ts +14 -6
  6. package/dist/adapter-types.d.ts.map +1 -1
  7. package/dist/adapter-types.js.map +1 -1
  8. package/dist/debug-info.d.ts.map +1 -1
  9. package/dist/debug-info.js +33 -6
  10. package/dist/debug-info.js.map +1 -1
  11. package/dist/devtools/devtools-messages-client-session.d.ts +28 -23
  12. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  13. package/dist/devtools/devtools-messages-client-session.js +2 -2
  14. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  15. package/dist/devtools/devtools-messages-common.d.ts +7 -14
  16. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  17. package/dist/devtools/devtools-messages-common.js +1 -6
  18. package/dist/devtools/devtools-messages-common.js.map +1 -1
  19. package/dist/devtools/devtools-messages-leader.d.ts +38 -29
  20. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  21. package/dist/devtools/devtools-messages-leader.js +9 -8
  22. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  23. package/dist/devtools/devtools-sessioninfo.d.ts +14 -2
  24. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  25. package/dist/devtools/devtools-sessioninfo.js +7 -4
  26. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  27. package/dist/devtools/mod.d.ts +13 -2
  28. package/dist/devtools/mod.d.ts.map +1 -1
  29. package/dist/devtools/mod.js +10 -3
  30. package/dist/devtools/mod.js.map +1 -1
  31. package/dist/errors.d.ts +52 -10
  32. package/dist/errors.d.ts.map +1 -1
  33. package/dist/errors.js +25 -6
  34. package/dist/errors.js.map +1 -1
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/leader-thread/LeaderSyncProcessor.d.ts +41 -4
  40. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  41. package/dist/leader-thread/LeaderSyncProcessor.js +158 -75
  42. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  43. package/dist/leader-thread/eventlog.d.ts +21 -22
  44. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  45. package/dist/leader-thread/eventlog.js +77 -20
  46. package/dist/leader-thread/eventlog.js.map +1 -1
  47. package/dist/leader-thread/leader-worker-devtools.d.ts +2 -2
  48. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  49. package/dist/leader-thread/leader-worker-devtools.js +56 -45
  50. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  51. package/dist/leader-thread/make-leader-thread-layer.d.ts +6 -6
  52. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  53. package/dist/leader-thread/make-leader-thread-layer.js +79 -27
  54. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  55. package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
  56. package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
  57. package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
  58. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
  59. package/dist/leader-thread/materialize-event.d.ts +3 -3
  60. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  61. package/dist/leader-thread/materialize-event.js +25 -11
  62. package/dist/leader-thread/materialize-event.js.map +1 -1
  63. package/dist/leader-thread/mod.d.ts +1 -0
  64. package/dist/leader-thread/mod.d.ts.map +1 -1
  65. package/dist/leader-thread/mod.js +1 -0
  66. package/dist/leader-thread/mod.js.map +1 -1
  67. package/dist/leader-thread/recreate-db.d.ts +2 -3
  68. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  69. package/dist/leader-thread/recreate-db.js +5 -5
  70. package/dist/leader-thread/recreate-db.js.map +1 -1
  71. package/dist/leader-thread/shutdown-channel.d.ts +2 -2
  72. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  73. package/dist/leader-thread/shutdown-channel.js +2 -2
  74. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  75. package/dist/leader-thread/stream-events.d.ts +56 -0
  76. package/dist/leader-thread/stream-events.d.ts.map +1 -0
  77. package/dist/leader-thread/stream-events.js +166 -0
  78. package/dist/leader-thread/stream-events.js.map +1 -0
  79. package/dist/leader-thread/types.d.ts +98 -20
  80. package/dist/leader-thread/types.d.ts.map +1 -1
  81. package/dist/leader-thread/types.js +13 -0
  82. package/dist/leader-thread/types.js.map +1 -1
  83. package/dist/logging.d.ts +40 -0
  84. package/dist/logging.d.ts.map +1 -0
  85. package/dist/logging.js +33 -0
  86. package/dist/logging.js.map +1 -0
  87. package/dist/make-client-session.d.ts +5 -3
  88. package/dist/make-client-session.d.ts.map +1 -1
  89. package/dist/make-client-session.js +5 -2
  90. package/dist/make-client-session.js.map +1 -1
  91. package/dist/materializer-helper.d.ts +6 -6
  92. package/dist/materializer-helper.d.ts.map +1 -1
  93. package/dist/materializer-helper.js +20 -4
  94. package/dist/materializer-helper.js.map +1 -1
  95. package/dist/otel.d.ts +2 -1
  96. package/dist/otel.d.ts.map +1 -1
  97. package/dist/otel.js +5 -0
  98. package/dist/otel.js.map +1 -1
  99. package/dist/rematerialize-from-eventlog.d.ts +2 -2
  100. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  101. package/dist/rematerialize-from-eventlog.js +29 -20
  102. package/dist/rematerialize-from-eventlog.js.map +1 -1
  103. package/dist/schema/EventDef/define.d.ts +147 -0
  104. package/dist/schema/EventDef/define.d.ts.map +1 -0
  105. package/dist/schema/EventDef/define.js +139 -0
  106. package/dist/schema/EventDef/define.js.map +1 -0
  107. package/dist/schema/EventDef/event-def.d.ts +106 -0
  108. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  109. package/dist/schema/EventDef/event-def.js +2 -0
  110. package/dist/schema/EventDef/event-def.js.map +1 -0
  111. package/dist/schema/EventDef/facts.d.ts +118 -0
  112. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  113. package/dist/schema/EventDef/facts.js +53 -0
  114. package/dist/schema/EventDef/facts.js.map +1 -0
  115. package/dist/schema/EventDef/materializer.d.ts +155 -0
  116. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  117. package/dist/schema/EventDef/materializer.js +83 -0
  118. package/dist/schema/EventDef/materializer.js.map +1 -0
  119. package/dist/schema/EventDef/mod.d.ts +5 -0
  120. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  121. package/dist/schema/EventDef/mod.js +5 -0
  122. package/dist/schema/EventDef/mod.js.map +1 -0
  123. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  124. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  125. package/dist/schema/EventSequenceNumber/client.js +193 -0
  126. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  127. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  128. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  129. package/dist/schema/EventSequenceNumber/global.js +14 -0
  130. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  131. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  132. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  133. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  134. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  135. package/dist/schema/EventSequenceNumber.test.js +43 -43
  136. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  137. package/dist/schema/{LiveStoreEvent.d.ts → LiveStoreEvent/client.d.ts} +89 -106
  138. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  139. package/dist/schema/{LiveStoreEvent.js → LiveStoreEvent/client.js} +74 -58
  140. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  141. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  142. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  143. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  144. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  145. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  146. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  147. package/dist/schema/LiveStoreEvent/global.js +31 -0
  148. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  149. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  150. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  151. package/dist/schema/LiveStoreEvent/input.js +26 -0
  152. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  153. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  154. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  155. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  156. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  157. package/dist/schema/events.d.ts +1 -1
  158. package/dist/schema/events.d.ts.map +1 -1
  159. package/dist/schema/events.js +1 -1
  160. package/dist/schema/events.js.map +1 -1
  161. package/dist/schema/mod.d.ts +6 -4
  162. package/dist/schema/mod.d.ts.map +1 -1
  163. package/dist/schema/mod.js +5 -4
  164. package/dist/schema/mod.js.map +1 -1
  165. package/dist/schema/schema.d.ts +16 -1
  166. package/dist/schema/schema.d.ts.map +1 -1
  167. package/dist/schema/schema.js +27 -2
  168. package/dist/schema/schema.js.map +1 -1
  169. package/dist/schema/state/sqlite/client-document-def.d.ts +36 -6
  170. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  171. package/dist/schema/state/sqlite/client-document-def.js +97 -6
  172. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  173. package/dist/schema/state/sqlite/client-document-def.test.js +16 -0
  174. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  175. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  176. package/dist/schema/state/sqlite/column-annotations.js +14 -6
  177. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  178. package/dist/schema/state/sqlite/column-annotations.test.js +1 -1
  179. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  180. package/dist/schema/state/sqlite/column-def.js +69 -22
  181. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  182. package/dist/schema/state/sqlite/column-def.test.js +48 -10
  183. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  184. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  185. package/dist/schema/state/sqlite/column-spec.js +30 -12
  186. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  187. package/dist/schema/state/sqlite/column-spec.test.js +23 -14
  188. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  189. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -1
  190. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  191. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +23 -6
  192. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  193. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +14 -8
  194. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  195. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +5 -3
  196. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  197. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  198. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +2 -1
  199. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  200. package/dist/schema/state/sqlite/mod.d.ts +3 -3
  201. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  202. package/dist/schema/state/sqlite/mod.js +3 -3
  203. package/dist/schema/state/sqlite/mod.js.map +1 -1
  204. package/dist/schema/state/sqlite/query-builder/api.d.ts +19 -11
  205. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  206. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  207. package/dist/schema/state/sqlite/query-builder/astToSql.js +22 -15
  208. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  209. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  210. package/dist/schema/state/sqlite/query-builder/impl.js +6 -3
  211. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  212. package/dist/schema/state/sqlite/query-builder/impl.test.js +252 -88
  213. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  214. package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
  215. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  216. package/dist/schema/state/sqlite/schema-helpers.js +22 -12
  217. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  218. package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
  219. package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
  220. package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
  221. package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
  222. package/dist/schema/state/sqlite/{system-tables.d.ts → system-tables/eventlog-tables.d.ts} +63 -456
  223. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  224. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  225. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  226. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  227. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  228. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  229. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  230. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +456 -0
  231. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  232. package/dist/schema/state/sqlite/system-tables/state-tables.js +55 -0
  233. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  234. package/dist/schema/state/sqlite/table-def.d.ts +4 -4
  235. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  236. package/dist/schema/state/sqlite/table-def.js +2 -2
  237. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  238. package/dist/schema/state/sqlite/table-def.test.js +80 -0
  239. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  240. package/dist/schema/unknown-events.d.ts +47 -0
  241. package/dist/schema/unknown-events.d.ts.map +1 -0
  242. package/dist/schema/unknown-events.js +69 -0
  243. package/dist/schema/unknown-events.js.map +1 -0
  244. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
  245. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
  246. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
  247. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
  248. package/dist/schema-management/migrations.d.ts +32 -2
  249. package/dist/schema-management/migrations.d.ts.map +1 -1
  250. package/dist/schema-management/migrations.js +37 -5
  251. package/dist/schema-management/migrations.js.map +1 -1
  252. package/dist/schema-management/validate-schema.d.ts +3 -3
  253. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  254. package/dist/schema-management/validate-schema.js +2 -2
  255. package/dist/schema-management/validate-schema.js.map +1 -1
  256. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  257. package/dist/sql-queries/sql-queries.js +11 -1
  258. package/dist/sql-queries/sql-queries.js.map +1 -1
  259. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  260. package/dist/sql-queries/sql-query-builder.js +2 -1
  261. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  262. package/dist/sqlite-types.d.ts +3 -3
  263. package/dist/sqlite-types.d.ts.map +1 -1
  264. package/dist/sync/ClientSessionSyncProcessor.d.ts +11 -13
  265. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  266. package/dist/sync/ClientSessionSyncProcessor.js +45 -42
  267. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  268. package/dist/sync/errors.d.ts +66 -0
  269. package/dist/sync/errors.d.ts.map +1 -0
  270. package/dist/sync/errors.js +36 -0
  271. package/dist/sync/errors.js.map +1 -0
  272. package/dist/sync/index.d.ts +3 -0
  273. package/dist/sync/index.d.ts.map +1 -1
  274. package/dist/sync/index.js +3 -0
  275. package/dist/sync/index.js.map +1 -1
  276. package/dist/sync/mock-sync-backend.d.ts +23 -0
  277. package/dist/sync/mock-sync-backend.d.ts.map +1 -0
  278. package/dist/sync/mock-sync-backend.js +114 -0
  279. package/dist/sync/mock-sync-backend.js.map +1 -0
  280. package/dist/sync/next/compact-events.d.ts.map +1 -1
  281. package/dist/sync/next/compact-events.js +6 -7
  282. package/dist/sync/next/compact-events.js.map +1 -1
  283. package/dist/sync/next/facts.d.ts +5 -5
  284. package/dist/sync/next/facts.d.ts.map +1 -1
  285. package/dist/sync/next/facts.js +1 -2
  286. package/dist/sync/next/facts.js.map +1 -1
  287. package/dist/sync/next/history-dag-common.d.ts +54 -15
  288. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  289. package/dist/sync/next/history-dag-common.js +198 -9
  290. package/dist/sync/next/history-dag-common.js.map +1 -1
  291. package/dist/sync/next/history-dag.d.ts.map +1 -1
  292. package/dist/sync/next/history-dag.js +10 -8
  293. package/dist/sync/next/history-dag.js.map +1 -1
  294. package/dist/sync/next/rebase-events.d.ts +5 -5
  295. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  296. package/dist/sync/next/rebase-events.js +5 -5
  297. package/dist/sync/next/rebase-events.js.map +1 -1
  298. package/dist/sync/next/test/event-fixtures.d.ts +2 -2
  299. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  300. package/dist/sync/next/test/event-fixtures.js +9 -9
  301. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  302. package/dist/sync/sync-backend-kv.d.ts +7 -0
  303. package/dist/sync/sync-backend-kv.d.ts.map +1 -0
  304. package/dist/sync/sync-backend-kv.js +18 -0
  305. package/dist/sync/sync-backend-kv.js.map +1 -0
  306. package/dist/sync/sync-backend.d.ts +105 -0
  307. package/dist/sync/sync-backend.d.ts.map +1 -0
  308. package/dist/sync/sync-backend.js +61 -0
  309. package/dist/sync/sync-backend.js.map +1 -0
  310. package/dist/sync/sync.d.ts +9 -86
  311. package/dist/sync/sync.d.ts.map +1 -1
  312. package/dist/sync/sync.js +2 -27
  313. package/dist/sync/sync.js.map +1 -1
  314. package/dist/sync/syncstate.d.ts +57 -44
  315. package/dist/sync/syncstate.d.ts.map +1 -1
  316. package/dist/sync/syncstate.js +50 -45
  317. package/dist/sync/syncstate.js.map +1 -1
  318. package/dist/sync/syncstate.test.js +83 -46
  319. package/dist/sync/syncstate.test.js.map +1 -1
  320. package/dist/sync/transport-chunking.d.ts +36 -0
  321. package/dist/sync/transport-chunking.d.ts.map +1 -0
  322. package/dist/sync/transport-chunking.js +56 -0
  323. package/dist/sync/transport-chunking.js.map +1 -0
  324. package/dist/sync/validate-push-payload.d.ts +2 -2
  325. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  326. package/dist/sync/validate-push-payload.js +6 -6
  327. package/dist/sync/validate-push-payload.js.map +1 -1
  328. package/dist/testing/event-factory.d.ts +68 -0
  329. package/dist/testing/event-factory.d.ts.map +1 -0
  330. package/dist/testing/event-factory.js +78 -0
  331. package/dist/testing/event-factory.js.map +1 -0
  332. package/dist/testing/mod.d.ts +2 -0
  333. package/dist/testing/mod.d.ts.map +1 -0
  334. package/dist/testing/mod.js +2 -0
  335. package/dist/testing/mod.js.map +1 -0
  336. package/dist/version.d.ts +16 -6
  337. package/dist/version.d.ts.map +1 -1
  338. package/dist/version.js +16 -6
  339. package/dist/version.js.map +1 -1
  340. package/package.json +7 -8
  341. package/src/ClientSessionLeaderThreadProxy.ts +20 -12
  342. package/src/adapter-types.ts +18 -6
  343. package/src/debug-info.ts +37 -6
  344. package/src/devtools/devtools-messages-client-session.ts +2 -2
  345. package/src/devtools/devtools-messages-common.ts +1 -8
  346. package/src/devtools/devtools-messages-leader.ts +9 -8
  347. package/src/devtools/devtools-sessioninfo.ts +8 -5
  348. package/src/devtools/mod.ts +11 -2
  349. package/src/errors.ts +38 -11
  350. package/src/index.ts +2 -1
  351. package/src/leader-thread/LeaderSyncProcessor.ts +277 -105
  352. package/src/leader-thread/eventlog.ts +113 -38
  353. package/src/leader-thread/leader-worker-devtools.ts +86 -55
  354. package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
  355. package/src/leader-thread/make-leader-thread-layer.ts +156 -37
  356. package/src/leader-thread/materialize-event.ts +37 -12
  357. package/src/leader-thread/mod.ts +1 -0
  358. package/src/leader-thread/recreate-db.ts +15 -7
  359. package/src/leader-thread/shutdown-channel.ts +16 -2
  360. package/src/leader-thread/stream-events.ts +201 -0
  361. package/src/leader-thread/types.ts +70 -20
  362. package/src/logging.ts +62 -0
  363. package/src/make-client-session.ts +9 -3
  364. package/src/materializer-helper.ts +27 -10
  365. package/src/otel.ts +10 -0
  366. package/src/rematerialize-from-eventlog.ts +37 -27
  367. package/src/schema/EventDef/define.ts +201 -0
  368. package/src/schema/EventDef/event-def.ts +120 -0
  369. package/src/schema/EventDef/facts.ts +135 -0
  370. package/src/schema/EventDef/materializer.ts +172 -0
  371. package/src/schema/EventDef/mod.ts +4 -0
  372. package/src/schema/EventSequenceNumber/client.ts +257 -0
  373. package/src/schema/EventSequenceNumber/global.ts +19 -0
  374. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  375. package/src/schema/EventSequenceNumber.test.ts +70 -52
  376. package/src/schema/LiveStoreEvent/client.ts +221 -0
  377. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  378. package/src/schema/LiveStoreEvent/global.ts +45 -0
  379. package/src/schema/LiveStoreEvent/input.ts +63 -0
  380. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  381. package/src/schema/events.ts +1 -1
  382. package/src/schema/mod.ts +6 -4
  383. package/src/schema/schema.ts +39 -3
  384. package/src/schema/state/sqlite/client-document-def.test.ts +19 -2
  385. package/src/schema/state/sqlite/client-document-def.ts +127 -25
  386. package/src/schema/state/sqlite/column-annotations.test.ts +1 -1
  387. package/src/schema/state/sqlite/column-annotations.ts +16 -6
  388. package/src/schema/state/sqlite/column-def.test.ts +62 -10
  389. package/src/schema/state/sqlite/column-def.ts +88 -21
  390. package/src/schema/state/sqlite/column-spec.test.ts +29 -16
  391. package/src/schema/state/sqlite/column-spec.ts +36 -11
  392. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +26 -6
  393. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +29 -12
  394. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +12 -17
  395. package/src/schema/state/sqlite/mod.ts +4 -3
  396. package/src/schema/state/sqlite/query-builder/api.ts +25 -11
  397. package/src/schema/state/sqlite/query-builder/astToSql.ts +23 -14
  398. package/src/schema/state/sqlite/query-builder/impl.test.ts +305 -92
  399. package/src/schema/state/sqlite/query-builder/impl.ts +8 -3
  400. package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
  401. package/src/schema/state/sqlite/schema-helpers.ts +28 -20
  402. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  403. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  404. package/src/schema/state/sqlite/system-tables/state-tables.ts +69 -0
  405. package/src/schema/state/sqlite/table-def.test.ts +101 -0
  406. package/src/schema/state/sqlite/table-def.ts +8 -6
  407. package/src/schema/unknown-events.ts +131 -0
  408. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +86 -0
  409. package/src/schema-management/migrations.ts +41 -8
  410. package/src/schema-management/validate-schema.ts +3 -3
  411. package/src/sql-queries/sql-queries.ts +9 -1
  412. package/src/sql-queries/sql-query-builder.ts +2 -1
  413. package/src/sqlite-types.ts +3 -3
  414. package/src/sync/ClientSessionSyncProcessor.ts +69 -62
  415. package/src/sync/errors.ts +38 -0
  416. package/src/sync/index.ts +3 -0
  417. package/src/sync/mock-sync-backend.ts +184 -0
  418. package/src/sync/next/compact-events.ts +6 -7
  419. package/src/sync/next/facts.ts +7 -9
  420. package/src/sync/next/history-dag-common.ts +277 -26
  421. package/src/sync/next/history-dag.ts +16 -10
  422. package/src/sync/next/rebase-events.ts +11 -11
  423. package/src/sync/next/test/event-fixtures.ts +11 -11
  424. package/src/sync/sync-backend-kv.ts +22 -0
  425. package/src/sync/sync-backend.ts +185 -0
  426. package/src/sync/sync.ts +9 -91
  427. package/src/sync/syncstate.test.ts +96 -52
  428. package/src/sync/syncstate.ts +69 -58
  429. package/src/sync/transport-chunking.ts +90 -0
  430. package/src/sync/validate-push-payload.ts +8 -9
  431. package/src/testing/event-factory.ts +131 -0
  432. package/src/testing/mod.ts +1 -0
  433. package/src/version.ts +16 -6
  434. package/dist/schema/EventDef.d.ts +0 -123
  435. package/dist/schema/EventDef.d.ts.map +0 -1
  436. package/dist/schema/EventDef.js +0 -46
  437. package/dist/schema/EventDef.js.map +0 -1
  438. package/dist/schema/EventSequenceNumber.d.ts +0 -80
  439. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  440. package/dist/schema/EventSequenceNumber.js +0 -139
  441. package/dist/schema/EventSequenceNumber.js.map +0 -1
  442. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  443. package/dist/schema/LiveStoreEvent.js.map +0 -1
  444. package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
  445. package/dist/schema/state/sqlite/system-tables.js +0 -79
  446. package/dist/schema/state/sqlite/system-tables.js.map +0 -1
  447. package/dist/schema-management/migrations.test.d.ts +0 -2
  448. package/dist/schema-management/migrations.test.d.ts.map +0 -1
  449. package/dist/schema-management/migrations.test.js +0 -52
  450. package/dist/schema-management/migrations.test.js.map +0 -1
  451. package/dist/sync/next/graphology.d.ts +0 -8
  452. package/dist/sync/next/graphology.d.ts.map +0 -1
  453. package/dist/sync/next/graphology.js +0 -30
  454. package/dist/sync/next/graphology.js.map +0 -1
  455. package/dist/sync/next/graphology_.d.ts +0 -3
  456. package/dist/sync/next/graphology_.d.ts.map +0 -1
  457. package/dist/sync/next/graphology_.js +0 -3
  458. package/dist/sync/next/graphology_.js.map +0 -1
  459. package/src/schema/EventDef.ts +0 -219
  460. package/src/schema/EventSequenceNumber.ts +0 -199
  461. package/src/schema/LiveStoreEvent.ts +0 -287
  462. package/src/schema/state/sqlite/system-tables.ts +0 -104
  463. package/src/sync/next/ambient.d.ts +0 -3
  464. package/src/sync/next/graphology.ts +0 -41
  465. package/src/sync/next/graphology_.ts +0 -2
@@ -1,123 +1,79 @@
1
1
  import { Option, Schema } from '@livestore/utils/effect';
2
- import type { EventDef, EventDefRecord } from './EventDef.ts';
3
- import * as EventSequenceNumber from './EventSequenceNumber.ts';
4
- import type { LiveStoreSchema } from './schema.ts';
5
- export declare namespace ForEventDef {
6
- type PartialDecoded<TEventDef extends EventDef.Any> = {
7
- name: TEventDef['name'];
8
- args: Schema.Schema.Type<TEventDef['schema']>;
9
- };
10
- type PartialEncoded<TEventDef extends EventDef.Any> = {
11
- name: TEventDef['name'];
12
- args: Schema.Schema.Encoded<TEventDef['schema']>;
13
- };
14
- type Decoded<TEventDef extends EventDef.Any> = {
15
- name: TEventDef['name'];
16
- args: Schema.Schema.Type<TEventDef['schema']>;
17
- seqNum: EventSequenceNumber.EventSequenceNumber;
18
- parentSeqNum: EventSequenceNumber.EventSequenceNumber;
19
- clientId: string;
20
- sessionId: string;
21
- };
22
- type Encoded<TEventDef extends EventDef.Any> = {
23
- name: TEventDef['name'];
24
- args: Schema.Schema.Encoded<TEventDef['schema']>;
25
- seqNum: EventSequenceNumber.EventSequenceNumber;
26
- parentSeqNum: EventSequenceNumber.EventSequenceNumber;
27
- clientId: string;
28
- sessionId: string;
29
- };
30
- }
31
- export type AnyDecoded = ForEventDef.Decoded<EventDef.Any>;
32
- export declare const AnyDecoded: Schema.Struct<{
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<{
33
9
  name: typeof Schema.String;
34
10
  args: typeof Schema.Any;
35
11
  seqNum: Schema.Struct<{
36
12
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
37
13
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
38
14
  rebaseGeneration: typeof Schema.Int;
39
- }>;
15
+ }> & {
16
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
17
+ };
40
18
  parentSeqNum: Schema.Struct<{
41
19
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
42
20
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
43
21
  rebaseGeneration: typeof Schema.Int;
44
- }>;
22
+ }> & {
23
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
24
+ };
45
25
  clientId: typeof Schema.String;
46
26
  sessionId: typeof Schema.String;
47
27
  }>;
48
- export type AnyEncoded = ForEventDef.Encoded<EventDef.Any>;
49
- export declare const AnyEncoded: Schema.Struct<{
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
50
  name: typeof Schema.String;
51
51
  args: typeof Schema.Any;
52
52
  seqNum: Schema.Struct<{
53
53
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
54
54
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
55
55
  rebaseGeneration: typeof Schema.Int;
56
- }>;
56
+ }> & {
57
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
58
+ };
57
59
  parentSeqNum: Schema.Struct<{
58
60
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
59
61
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
60
62
  rebaseGeneration: typeof Schema.Int;
61
- }>;
62
- clientId: typeof Schema.String;
63
- sessionId: typeof Schema.String;
64
- }>;
65
- export declare const AnyEncodedGlobal: Schema.Struct<{
66
- name: typeof Schema.String;
67
- args: typeof Schema.Any;
68
- seqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
69
- parentSeqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
63
+ }> & {
64
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
65
+ };
70
66
  clientId: typeof Schema.String;
71
67
  sessionId: typeof Schema.String;
72
68
  }>;
73
- export type AnyEncodedGlobal = typeof AnyEncodedGlobal.Type;
74
- export type PartialAnyDecoded = ForEventDef.PartialDecoded<EventDef.Any>;
75
- export type PartialAnyEncoded = ForEventDef.PartialEncoded<EventDef.Any>;
76
- export declare const PartialAnyEncoded: Schema.Struct<{
77
- name: typeof Schema.String;
78
- args: typeof Schema.Any;
79
- }>;
80
- export type PartialForSchema<TSchema extends LiveStoreSchema> = {
81
- [K in keyof TSchema['_EventDefMapType']]: ForEventDef.PartialDecoded<TSchema['_EventDefMapType'][K]>;
82
- }[keyof TSchema['_EventDefMapType']];
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). */
83
74
  export type ForSchema<TSchema extends LiveStoreSchema> = {
84
75
  [K in keyof TSchema['_EventDefMapType']]: ForEventDef.Decoded<TSchema['_EventDefMapType'][K]>;
85
76
  }[keyof TSchema['_EventDefMapType']];
86
- export declare const isPartialEventDef: (event: AnyDecoded | PartialAnyDecoded) => event is PartialAnyDecoded;
87
- export type ForEventDefRecord<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
88
- [K in keyof TEventDefRecord]: {
89
- name: K;
90
- args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
91
- seqNum: EventSequenceNumber.EventSequenceNumber;
92
- parentSeqNum: EventSequenceNumber.EventSequenceNumber;
93
- clientId: string;
94
- sessionId: string;
95
- };
96
- }[keyof TEventDefRecord], {
97
- [K in keyof TEventDefRecord]: {
98
- name: K;
99
- args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
100
- seqNum: EventSequenceNumber.EventSequenceNumber;
101
- parentSeqNum: EventSequenceNumber.EventSequenceNumber;
102
- clientId: string;
103
- sessionId: string;
104
- };
105
- }[keyof TEventDefRecord]>;
106
- export type EventDefPartialSchema<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
107
- [K in keyof TEventDefRecord]: {
108
- name: K;
109
- args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
110
- };
111
- }[keyof TEventDefRecord], {
112
- [K in keyof TEventDefRecord]: {
113
- name: K;
114
- args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
115
- };
116
- }[keyof TEventDefRecord]>;
117
- export declare const makeEventDefSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
118
- export declare const makeEventDefPartialSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => EventDefPartialSchema<TSchema["_EventDefMapType"]>;
119
- export declare const makeEventDefSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
120
- export declare const encodedFromGlobal: (event: AnyEncodedGlobal) => AnyEncoded;
121
77
  declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
122
78
  name: typeof Schema.String;
123
79
  args: typeof Schema.Any;
@@ -125,12 +81,16 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
125
81
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
126
82
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
127
83
  rebaseGeneration: typeof Schema.Int;
128
- }>;
84
+ }> & {
85
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
86
+ };
129
87
  parentSeqNum: Schema.Struct<{
130
88
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
131
89
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
132
90
  rebaseGeneration: typeof Schema.Int;
133
- }>;
91
+ }> & {
92
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
93
+ };
134
94
  clientId: typeof Schema.String;
135
95
  sessionId: typeof Schema.String;
136
96
  meta: Schema.PropertySignature<":", {
@@ -182,12 +142,16 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
182
142
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
183
143
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
184
144
  rebaseGeneration: typeof Schema.Int;
185
- }>;
145
+ }> & {
146
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
147
+ };
186
148
  parentSeqNum: Schema.Struct<{
187
149
  global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
188
150
  client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
189
151
  rebaseGeneration: typeof Schema.Int;
190
- }>;
152
+ }> & {
153
+ make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
154
+ };
191
155
  clientId: typeof Schema.String;
192
156
  sessionId: typeof Schema.String;
193
157
  meta: Schema.PropertySignature<":", {
@@ -266,9 +230,14 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
266
230
  syncMetadata: Option.Option<Schema.JsonValue>;
267
231
  materializerHashLeader: Option.Option<number>;
268
232
  materializerHashSession: Option.Option<number>;
269
- } | undefined;
233
+ };
270
234
  }, {}, {}>;
271
- /** Equivalent to AnyEncoded but with a meta field and some convenience methods */
235
+ /**
236
+ * Internal event representation with metadata for sync processing.
237
+ * Includes changeset data and materializer hashes for conflict detection and rebasing.
238
+ *
239
+ * Note: This class is exported for internal use. The preferred access is via `LiveStoreEvent.Client.EncodedWithMeta`.
240
+ */
272
241
  export declare class EncodedWithMeta extends EncodedWithMeta_base {
273
242
  toJSON: () => any;
274
243
  /**
@@ -277,30 +246,44 @@ export declare class EncodedWithMeta extends EncodedWithMeta_base {
277
246
  * the resulting event num will be e4 → e3
278
247
  *
279
248
  * Example: (client event)
280
- * For event e2+1 → e2 which should be rebased on event e3 → e2
281
- * the resulting event num will be e3+1 → e3
249
+ * For event e2.1 → e2 which should be rebased on event e3 → e2
250
+ * the resulting event num will be e3.1 → e3
282
251
  *
283
- * Syntax: e2+2 → e2+1
252
+ * Syntax: e2.2 → e2.1
284
253
  * ^ ^ ^ ^
285
254
  * | | | +- client parent number
286
255
  * | | +--- global parent number
287
256
  * | +-- client number
288
257
  * +---- global number
289
- * Client num is ommitted for global events
258
+ * Client num is omitted for global events
290
259
  */
291
260
  rebase: ({ parentSeqNum, isClient, rebaseGeneration, }: {
292
- parentSeqNum: EventSequenceNumber.EventSequenceNumber;
261
+ parentSeqNum: EventSequenceNumber.Client.Composite;
293
262
  isClient: boolean;
294
263
  rebaseGeneration: number;
295
264
  }) => EncodedWithMeta;
296
- static fromGlobal: (event: AnyEncodedGlobal, meta: {
265
+ static fromGlobal: (event: Global.Encoded, meta: {
297
266
  syncMetadata: Option.Option<Schema.JsonValue>;
298
267
  materializerHashLeader: Option.Option<number>;
299
268
  materializerHashSession: Option.Option<number>;
300
269
  }) => EncodedWithMeta;
301
- toGlobal: () => AnyEncodedGlobal;
270
+ toGlobal: () => Global.Encoded;
302
271
  }
303
- /** NOTE `meta` is not considered for equality */
304
- export declare const isEqualEncoded: (a: AnyEncoded, b: AnyEncoded) => boolean;
272
+ /**
273
+ * Structural equality check for client events. Compares seqNum (global + client),
274
+ * name, clientId, sessionId, and args. The `meta` field is ignored.
275
+ */
276
+ export declare const isEqualEncoded: (a: Encoded, b: Encoded) => boolean;
277
+ /**
278
+ * Creates an Effect Schema union for all event types in a schema (with composite sequence numbers).
279
+ * @example
280
+ * ```ts
281
+ * const eventSchema = LiveStoreEvent.Client.makeSchema(schema)
282
+ * const event = Schema.decodeUnknownSync(eventSchema)(rawEvent)
283
+ * ```
284
+ */
285
+ export declare const makeSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
286
+ /** Memoized `makeSchema` - caches the generated schema by reference. */
287
+ export declare const makeSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
305
288
  export {};
306
- //# sourceMappingURL=LiveStoreEvent.d.ts.map
289
+ //# 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,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAExD,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;;;;;;;;;;;;;;;;;;;EAOsC,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;EAOsC,CAAA;AAE1D,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpC;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,oBAuCnC;IACA,MAAM,QAAO,GAAG,CASf;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,GAAI,+CAIP;QACD,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAClD,QAAQ,EAAE,OAAO,CAAA;QACjB,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,SAAS,CAAC,CAAA;QAC7C,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,CAI3B;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,YAMF,CAAA;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,eAAe,EACxD,QAAQ,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAYM,CAAA;AAE1D,wEAAwE;AACxE,eAAO,MAAM,cAAc,GAjBA,OAAO,SAAS,eAAe,UAChD,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAeE,CAAA"}
@@ -1,59 +1,55 @@
1
1
  import { memoizeByRef } from '@livestore/utils';
2
2
  import { Option, Schema } from '@livestore/utils/effect';
3
- import * as EventSequenceNumber from "./EventSequenceNumber.js";
4
- export const AnyDecoded = Schema.Struct({
3
+ import * as EventSequenceNumber from "../EventSequenceNumber/mod.js";
4
+ /** Effect Schema for client events with decoded args. */
5
+ export const Decoded = Schema.Struct({
5
6
  name: Schema.String,
6
7
  args: Schema.Any,
7
- seqNum: EventSequenceNumber.EventSequenceNumber,
8
- parentSeqNum: EventSequenceNumber.EventSequenceNumber,
8
+ seqNum: EventSequenceNumber.Client.Composite,
9
+ parentSeqNum: EventSequenceNumber.Client.Composite,
9
10
  clientId: Schema.String,
10
11
  sessionId: Schema.String,
11
- }).annotations({ title: 'LiveStoreEvent.AnyDecoded' });
12
- export const AnyEncoded = Schema.Struct({
12
+ }).annotations({ 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({
13
35
  name: Schema.String,
14
36
  args: Schema.Any,
15
- seqNum: EventSequenceNumber.EventSequenceNumber,
16
- parentSeqNum: EventSequenceNumber.EventSequenceNumber,
37
+ seqNum: EventSequenceNumber.Client.Composite,
38
+ parentSeqNum: EventSequenceNumber.Client.Composite,
17
39
  clientId: Schema.String,
18
40
  sessionId: Schema.String,
19
- }).annotations({ title: 'LiveStoreEvent.AnyEncoded' });
20
- export const AnyEncodedGlobal = Schema.Struct({
41
+ }).annotations({ 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')({
21
49
  name: Schema.String,
22
50
  args: Schema.Any,
23
- seqNum: EventSequenceNumber.GlobalEventSequenceNumber,
24
- parentSeqNum: EventSequenceNumber.GlobalEventSequenceNumber,
25
- clientId: Schema.String,
26
- sessionId: Schema.String,
27
- }).annotations({ title: 'LiveStoreEvent.AnyEncodedGlobal' });
28
- export const PartialAnyEncoded = Schema.Struct({
29
- name: Schema.String,
30
- args: Schema.Any,
31
- });
32
- export const isPartialEventDef = (event) => 'num' in event === false && 'parentSeqNum' in event === false;
33
- export const makeEventDefSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
34
- name: Schema.Literal(def.name),
35
- args: def.schema,
36
- seqNum: EventSequenceNumber.EventSequenceNumber,
37
- parentSeqNum: EventSequenceNumber.EventSequenceNumber,
38
- clientId: Schema.String,
39
- sessionId: Schema.String,
40
- }))).annotations({ title: 'EventDef' });
41
- export const makeEventDefPartialSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
42
- name: Schema.Literal(def.name),
43
- args: def.schema,
44
- }))).annotations({ title: 'EventDefPartial' });
45
- export const makeEventDefSchemaMemo = memoizeByRef(makeEventDefSchema);
46
- export const encodedFromGlobal = (event) => ({
47
- ...event,
48
- seqNum: EventSequenceNumber.fromGlobal(event.seqNum),
49
- parentSeqNum: EventSequenceNumber.fromGlobal(event.parentSeqNum),
50
- });
51
- /** Equivalent to AnyEncoded but with a meta field and some convenience methods */
52
- export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMeta')({
53
- name: Schema.String,
54
- args: Schema.Any,
55
- seqNum: EventSequenceNumber.EventSequenceNumber,
56
- parentSeqNum: EventSequenceNumber.EventSequenceNumber,
51
+ seqNum: EventSequenceNumber.Client.Composite,
52
+ parentSeqNum: EventSequenceNumber.Client.Composite,
57
53
  clientId: Schema.String,
58
54
  sessionId: Schema.String,
59
55
  // TODO get rid of `meta` again by cleaning up the usage implementations
@@ -86,7 +82,7 @@ export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMet
86
82
  // - More readable way to print the seqNum + parentSeqNum
87
83
  // - not including `meta`, `clientId`, `sessionId`
88
84
  return {
89
- seqNum: `${EventSequenceNumber.toString(this.seqNum)} → ${EventSequenceNumber.toString(this.parentSeqNum)} (${this.clientId}, ${this.sessionId})`,
85
+ seqNum: `${EventSequenceNumber.Client.toString(this.seqNum)} → ${EventSequenceNumber.Client.toString(this.parentSeqNum)} (${this.clientId}, ${this.sessionId})`,
90
86
  name: this.name,
91
87
  args: this.args,
92
88
  };
@@ -97,32 +93,32 @@ export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMet
97
93
  * the resulting event num will be e4 → e3
98
94
  *
99
95
  * Example: (client event)
100
- * For event e2+1 → e2 which should be rebased on event e3 → e2
101
- * the resulting event num will be e3+1 → e3
96
+ * For event e2.1 → e2 which should be rebased on event e3 → e2
97
+ * the resulting event num will be e3.1 → e3
102
98
  *
103
- * Syntax: e2+2 → e2+1
99
+ * Syntax: e2.2 → e2.1
104
100
  * ^ ^ ^ ^
105
101
  * | | | +- client parent number
106
102
  * | | +--- global parent number
107
103
  * | +-- client number
108
104
  * +---- global number
109
- * Client num is ommitted for global events
105
+ * Client num is omitted for global events
110
106
  */
111
107
  rebase = ({ parentSeqNum, isClient, rebaseGeneration, }) => new EncodedWithMeta({
112
108
  ...this,
113
- ...EventSequenceNumber.nextPair({ seqNum: parentSeqNum, isClient, rebaseGeneration }),
109
+ ...EventSequenceNumber.Client.nextPair({ seqNum: parentSeqNum, isClient, rebaseGeneration }),
114
110
  });
115
111
  static fromGlobal = (event, meta) => new EncodedWithMeta({
116
112
  ...event,
117
113
  seqNum: {
118
114
  global: event.seqNum,
119
- client: EventSequenceNumber.clientDefault,
120
- rebaseGeneration: EventSequenceNumber.rebaseGenerationDefault,
115
+ client: EventSequenceNumber.Client.DEFAULT,
116
+ rebaseGeneration: EventSequenceNumber.Client.REBASE_GENERATION_DEFAULT,
121
117
  },
122
118
  parentSeqNum: {
123
119
  global: event.parentSeqNum,
124
- client: EventSequenceNumber.clientDefault,
125
- rebaseGeneration: EventSequenceNumber.rebaseGenerationDefault,
120
+ client: EventSequenceNumber.Client.DEFAULT,
121
+ rebaseGeneration: EventSequenceNumber.Client.REBASE_GENERATION_DEFAULT,
126
122
  },
127
123
  meta: {
128
124
  sessionChangeset: { _tag: 'unset' },
@@ -137,12 +133,32 @@ export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMet
137
133
  parentSeqNum: this.parentSeqNum.global,
138
134
  });
139
135
  }
140
- /** NOTE `meta` is not considered for equality */
136
+ /**
137
+ * Structural equality check for client events. Compares seqNum (global + client),
138
+ * name, clientId, sessionId, and args. The `meta` field is ignored.
139
+ */
141
140
  export const isEqualEncoded = (a, b) => a.seqNum.global === b.seqNum.global &&
142
141
  a.seqNum.client === b.seqNum.client &&
143
142
  a.name === b.name &&
144
143
  a.clientId === b.clientId &&
145
144
  a.sessionId === b.sessionId &&
146
- // TODO use schema equality here
147
- JSON.stringify(a.args) === JSON.stringify(b.args);
148
- //# sourceMappingURL=LiveStoreEvent.js.map
145
+ JSON.stringify(a.args) === JSON.stringify(b.args); // TODO use schema equality here
146
+ /**
147
+ * Creates an Effect Schema union for all event types in a schema (with composite sequence numbers).
148
+ * @example
149
+ * ```ts
150
+ * const eventSchema = LiveStoreEvent.Client.makeSchema(schema)
151
+ * const event = Schema.decodeUnknownSync(eventSchema)(rawEvent)
152
+ * ```
153
+ */
154
+ export const makeSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
155
+ name: Schema.Literal(def.name),
156
+ args: def.schema,
157
+ seqNum: EventSequenceNumber.Client.Composite,
158
+ parentSeqNum: EventSequenceNumber.Client.Composite,
159
+ clientId: Schema.String,
160
+ sessionId: Schema.String,
161
+ }))).annotations({ title: 'LiveStoreEvent.Client' });
162
+ /** Memoized `makeSchema` - caches the generated schema by reference. */
163
+ export const makeSchemaMemo = memoizeByRef(makeSchema);
164
+ //# 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,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: Schema.Schema.Type<TEventDef['schema']>;
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: Schema.Schema.Encoded<TEventDef['schema']>;
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: Schema.Schema.Type<TEventDef['schema']>;
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: Schema.Schema.Encoded<TEventDef['schema']>;
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.Schema<{
34
+ [K in keyof TEventDefRecord]: {
35
+ name: K;
36
+ args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
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: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
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,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;CAC9C,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,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;CACjD,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,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7C,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,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,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,MAAM,CAC3E;KACG,CAAC,IAAI,MAAM,eAAe,GAAG;QAC5B,IAAI,EAAE,CAAC,CAAA;QACP,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,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,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzD,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
+ name: typeof Schema.String;
19
+ args: typeof Schema.Any;
20
+ seqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
21
+ parentSeqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
22
+ clientId: typeof Schema.String;
23
+ sessionId: typeof 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;;;;;;;EAOsC,CAAA;AAE1D,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
+ }).annotations({ 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,WAAW,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAA;AAK1D,+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"}