@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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-def.js","sourceRoot":"","sources":["../../../src/schema/EventDef/event-def.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Facts System for Event Constraints (Experimental)
3
+ *
4
+ * The facts system enables defining constraints and dependencies between events.
5
+ * Facts are key-value pairs that events can read, set, or require, allowing
6
+ * LiveStore to understand event relationships for:
7
+ * - History constraints (ordering requirements)
8
+ * - Event compaction (which events can be safely merged)
9
+ * - Conflict detection during sync
10
+ *
11
+ * @experimental This system is not fully implemented yet.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const facts = defineFacts({
16
+ * todoExists: (id: string) => [`todo:${id}`, true],
17
+ * userOwns: (userId: string, todoId: string) => [`owns:${userId}:${todoId}`, true],
18
+ * })
19
+ *
20
+ * const todoCreated = Events.synced({
21
+ * name: 'v1.TodoCreated',
22
+ * schema: Schema.Struct({ id: Schema.String, userId: Schema.String }),
23
+ * facts: ({ id, userId }) => ({
24
+ * modify: { set: [facts.todoExists(id), facts.userOwns(userId, id)] },
25
+ * require: [],
26
+ * }),
27
+ * })
28
+ * ```
29
+ * @module
30
+ */
31
+ /** String key identifying a fact (e.g., `"todo:abc123"` or `"user:owner:xyz"`). */
32
+ export type EventDefKey = string;
33
+ /** String identifier for a fact type. */
34
+ export type EventDefFact = string;
35
+ /** Immutable map of fact keys to their current values. */
36
+ export type EventDefFacts = ReadonlyMap<string, any>;
37
+ /**
38
+ * Groups of facts that an event interacts with.
39
+ * Used internally to track how events modify and depend on facts.
40
+ */
41
+ export type EventDefFactsGroup = {
42
+ /** Facts this event sets to a new value. */
43
+ modifySet: EventDefFacts;
44
+ /** Facts this event removes/unsets. */
45
+ modifyUnset: EventDefFacts;
46
+ /**
47
+ * Facts this event requires to exist with specific values.
48
+ * Events on independent dependency branches are commutative,
49
+ * which can facilitate more prioritized syncing.
50
+ */
51
+ depRequire: EventDefFacts;
52
+ /** Facts this event reads (but doesn't require). */
53
+ depRead: EventDefFacts;
54
+ };
55
+ /** Mutable snapshot of facts state at a point in time. */
56
+ export type EventDefFactsSnapshot = Map<string, any>;
57
+ /**
58
+ * Input format for specifying a fact.
59
+ * Either a simple key string (value defaults to `true`) or a `[key, value]` tuple.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * // Simple key (value = true)
64
+ * const fact1: EventDefFactInput = 'todo:abc123'
65
+ *
66
+ * // Key-value tuple
67
+ * const fact2: EventDefFactInput = ['todo:abc123', { status: 'active' }]
68
+ * ```
69
+ */
70
+ export type EventDefFactInput = string | readonly [string, any];
71
+ /**
72
+ * Callback function that defines how an event interacts with the facts system.
73
+ * Called during event processing to determine fact constraints.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const factsCallback: FactsCallback<{ id: string }> = (args, currentFacts) => ({
78
+ * modify: {
79
+ * set: [`item:${args.id}`], // Create/update this fact
80
+ * unset: [], // No facts to remove
81
+ * },
82
+ * require: currentFacts.has('initialized') ? [] : ['initialized'],
83
+ * })
84
+ * ```
85
+ */
86
+ export type FactsCallback<TTo> = (args: TTo, currentFacts: EventDefFacts) => {
87
+ modify: {
88
+ /** Facts to set (create or update). */
89
+ set: Iterable<EventDefFactInput>;
90
+ /** Facts to unset (remove). */
91
+ unset: Iterable<EventDefFactInput>;
92
+ };
93
+ /** Facts that must exist with specific values for this event to be valid. */
94
+ require: Iterable<EventDefFactInput>;
95
+ };
96
+ /**
97
+ * Helper to define a typed record of fact constructors.
98
+ * Returns the input unchanged but provides type inference.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const facts = defineFacts({
103
+ * // Simple fact (value = true)
104
+ * initialized: 'system:initialized',
105
+ *
106
+ * // Parameterized fact constructor
107
+ * todoExists: (id: string) => [`todo:${id}`, true] as const,
108
+ *
109
+ * // Fact with complex value
110
+ * todoStatus: (id: string, status: string) => [`todo:${id}:status`, status] as const,
111
+ * })
112
+ *
113
+ * // Usage
114
+ * facts.todoExists('abc') // => ['todo:abc', true]
115
+ * ```
116
+ */
117
+ export declare const defineFacts: <TRecord extends Record<string, EventDefFactInput | ((...args: any[]) => EventDefFactInput)>>(record: TRecord) => TRecord;
118
+ //# sourceMappingURL=facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../../src/schema/EventDef/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,4CAA4C;IAC5C,SAAS,EAAE,aAAa,CAAA;IAExB,uCAAuC;IACvC,WAAW,EAAE,aAAa,CAAA;IAE1B;;;;OAIG;IACH,UAAU,EAAE,aAAa,CAAA;IAEzB,oDAAoD;IACpD,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAED,0DAA0D;AAC1D,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE/D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI,CAC/B,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,aAAa,KACxB;IACH,MAAM,EAAE;QACN,uCAAuC;QACvC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAChC,+BAA+B;QAC/B,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;KACnC,CAAA;IACD,6EAA6E;IAC7E,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;CACrC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,iBAAiB,CAAC,CAAC,EAE3F,QAAQ,OAAO,KACd,OAAiB,CAAA"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Facts System for Event Constraints (Experimental)
3
+ *
4
+ * The facts system enables defining constraints and dependencies between events.
5
+ * Facts are key-value pairs that events can read, set, or require, allowing
6
+ * LiveStore to understand event relationships for:
7
+ * - History constraints (ordering requirements)
8
+ * - Event compaction (which events can be safely merged)
9
+ * - Conflict detection during sync
10
+ *
11
+ * @experimental This system is not fully implemented yet.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const facts = defineFacts({
16
+ * todoExists: (id: string) => [`todo:${id}`, true],
17
+ * userOwns: (userId: string, todoId: string) => [`owns:${userId}:${todoId}`, true],
18
+ * })
19
+ *
20
+ * const todoCreated = Events.synced({
21
+ * name: 'v1.TodoCreated',
22
+ * schema: Schema.Struct({ id: Schema.String, userId: Schema.String }),
23
+ * facts: ({ id, userId }) => ({
24
+ * modify: { set: [facts.todoExists(id), facts.userOwns(userId, id)] },
25
+ * require: [],
26
+ * }),
27
+ * })
28
+ * ```
29
+ * @module
30
+ */
31
+ /**
32
+ * Helper to define a typed record of fact constructors.
33
+ * Returns the input unchanged but provides type inference.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const facts = defineFacts({
38
+ * // Simple fact (value = true)
39
+ * initialized: 'system:initialized',
40
+ *
41
+ * // Parameterized fact constructor
42
+ * todoExists: (id: string) => [`todo:${id}`, true] as const,
43
+ *
44
+ * // Fact with complex value
45
+ * todoStatus: (id: string, status: string) => [`todo:${id}:status`, status] as const,
46
+ * })
47
+ *
48
+ * // Usage
49
+ * facts.todoExists('abc') // => ['todo:abc', true]
50
+ * ```
51
+ */
52
+ export const defineFacts = (record) => record;
53
+ //# sourceMappingURL=facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/schema/EventDef/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgFH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAGzB,MAAe,EACN,EAAE,CAAC,MAAM,CAAA"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Materializer System
3
+ *
4
+ * Materializers transform events into SQL mutations (INSERT, UPDATE, DELETE).
5
+ * Every non-derived event must have a corresponding materializer that defines
6
+ * how it affects the SQLite database state.
7
+ *
8
+ * Materializers are pure functions that receive the event arguments and return
9
+ * SQL operations. They can also query current state when needed for complex
10
+ * transformations.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { State } from '@livestore/livestore'
15
+ *
16
+ * const materializers = State.SQLite.materializers(events, {
17
+ * 'v1.TodoCreated': ({ id, text }) =>
18
+ * tables.todos.insert({ id, text, completed: false }),
19
+ *
20
+ * 'v1.TodoCompleted': ({ id }) =>
21
+ * tables.todos.update({ completed: true }).where({ id }),
22
+ *
23
+ * 'v1.TodoDeleted': ({ id, deletedAt }) =>
24
+ * tables.todos.update({ deletedAt }).where({ id }),
25
+ * })
26
+ * ```
27
+ * @module
28
+ */
29
+ import type { SingleOrReadonlyArray } from '@livestore/utils';
30
+ import type { BindValues } from '../../sql-queries/sql-queries.ts';
31
+ import type { ParamsObject } from '../../util.ts';
32
+ import type * as LiveStoreEvent from '../LiveStoreEvent/mod.ts';
33
+ import type { QueryBuilder } from '../state/sqlite/query-builder/mod.ts';
34
+ import type { EventDef } from './event-def.ts';
35
+ import type { EventDefFacts } from './facts.ts';
36
+ /**
37
+ * Result type for materializer functions.
38
+ *
39
+ * Can be one of:
40
+ * - A QueryBuilder operation (recommended for type safety)
41
+ * - A raw SQL string
42
+ * - An object with SQL, bind values, and optional write table tracking
43
+ */
44
+ export type MaterializerResult = {
45
+ sql: string;
46
+ bindValues: BindValues;
47
+ writeTables?: ReadonlySet<string>;
48
+ } | QueryBuilder.Any | string;
49
+ /**
50
+ * Function signature for querying current state within a materializer.
51
+ *
52
+ * Allows materializers to read existing data when computing mutations.
53
+ * Can be called with either raw SQL or a type-safe QueryBuilder.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * 'v1.TodoUpdated': ({ id, text }, { query }) => {
58
+ * const existing = query(tables.todos.select().where({ id }).first())
59
+ * if (!existing) return [] // No-op if todo doesn't exist
60
+ * return tables.todos.update({ text }).where({ id })
61
+ * }
62
+ * ```
63
+ */
64
+ export type MaterializerContextQuery = {
65
+ /** Query with raw SQL and bind values. */
66
+ (args: {
67
+ query: string;
68
+ bindValues: ParamsObject;
69
+ }): ReadonlyArray<unknown>;
70
+ /** Query with a type-safe QueryBuilder. */
71
+ <TResult>(qb: QueryBuilder<TResult, any, any>): TResult;
72
+ };
73
+ /**
74
+ * Function type for transforming an event into database mutations.
75
+ *
76
+ * Materializers are the bridge between events and SQLite state. They receive
77
+ * the decoded event arguments and return SQL operations to execute.
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const todoCreatedMaterializer: Materializer<typeof todoCreated> =
82
+ * ({ id, text }) => tables.todos.insert({ id, text, completed: false })
83
+ * ```
84
+ */
85
+ export type Materializer<TEventDef extends EventDef.AnyWithoutFn = EventDef.AnyWithoutFn> = (
86
+ /** Decoded event arguments. */
87
+ event: TEventDef['schema']['Type'], context: {
88
+ /** Current facts state (experimental). */
89
+ currentFacts: EventDefFacts;
90
+ /** The event definition being materialized. */
91
+ eventDef: TEventDef;
92
+ /** Function to query current database state. */
93
+ query: MaterializerContextQuery;
94
+ /** Full event metadata including clientId, sessionId, sequence numbers. */
95
+ event: LiveStoreEvent.Client.Decoded;
96
+ }) => SingleOrReadonlyArray<MaterializerResult>;
97
+ /**
98
+ * Type-safe wrapper for defining a single materializer.
99
+ *
100
+ * Useful when defining materializers separately from the `materializers()` builder.
101
+ * The first argument provides type inference for the second.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * const todoCreatedHandler = defineMaterializer(
106
+ * events.todoCreated,
107
+ * ({ id, text }) => tables.todos.insert({ id, text, completed: false })
108
+ * )
109
+ * ```
110
+ */
111
+ export declare const defineMaterializer: <TEventDef extends EventDef.AnyWithoutFn>(_eventDef: TEventDef, materializer: Materializer<TEventDef>) => Materializer<TEventDef>;
112
+ /**
113
+ * Builder function for creating a type-safe materializer map.
114
+ *
115
+ * This is the primary way to define materializers in LiveStore. It ensures:
116
+ * - Every non-derived event has a corresponding materializer
117
+ * - Materializer argument types match their event schemas
118
+ * - Derived events are excluded from the required handlers
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * import { State } from '@livestore/livestore'
123
+ *
124
+ * const handlers = State.SQLite.materializers(events, {
125
+ * // Handler for each event - argument types are inferred
126
+ * 'v1.TodoCreated': ({ id, text, completed }) =>
127
+ * tables.todos.insert({ id, text, completed }),
128
+ *
129
+ * 'v1.TodoUpdated': ({ id, text }) =>
130
+ * tables.todos.update({ text }).where({ id }),
131
+ *
132
+ * // Can return multiple operations
133
+ * 'v1.UserCreatedWithDefaults': ({ userId, name }) => [
134
+ * tables.users.insert({ id: userId, name }),
135
+ * tables.settings.insert({ userId, theme: 'light' }),
136
+ * ],
137
+ *
138
+ * // Can query current state
139
+ * 'v1.TodoToggled': ({ id }, { query }) => {
140
+ * const todo = query(tables.todos.select().where({ id }).first())
141
+ * return tables.todos.update({ completed: !todo?.completed }).where({ id })
142
+ * },
143
+ * })
144
+ * ```
145
+ */
146
+ export declare const materializers: <TInputRecord extends Record<string, EventDef.AnyWithoutFn>>(_eventDefRecord: TInputRecord, handlers: { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
147
+ name: TEventName;
148
+ }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
149
+ name: TEventName;
150
+ }>>; }) => { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
151
+ name: TEventName;
152
+ }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
153
+ name: TEventName;
154
+ }>>; };
155
+ //# sourceMappingURL=materializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializer.d.ts","sourceRoot":"","sources":["../../../src/schema/EventDef/materializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IACE,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAClC,GACD,YAAY,CAAC,GAAG,GAChB,MAAM,CAAA;AAEV;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,0CAA0C;IAC1C,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,CAAA;KAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3E,2CAA2C;IAC3C,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAA;CACxD,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI;AAC1F,+BAA+B;AAC/B,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE;IACP,0CAA0C;IAC1C,YAAY,EAAE,aAAa,CAAA;IAC3B,+CAA+C;IAC/C,QAAQ,EAAE,SAAS,CAAA;IACnB,gDAAgD;IAChD,KAAK,EAAE,wBAAwB,CAAA;IAC/B,2EAA2E;IAC3E,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAA;CACrC,KACE,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;AAE9C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,QAAQ,CAAC,YAAY,EACxE,WAAW,SAAS,EACpB,cAAc,YAAY,CAAC,SAAS,CAAC,KACpC,YAAY,CAAC,SAAS,CAExB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EACtF,iBAAiB,YAAY,EAC7B,UAAU,GACP,UAAU,IAAI,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAChE,YAAY,CAAC,MAAM,YAAY,CAAC,EAChC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CACrB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAChC,KAAK,GACL,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC,GAC/F,QANE,UAAU;UAED,UAAU;;UAG4D,UAAU;MAI7F,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Materializer System
3
+ *
4
+ * Materializers transform events into SQL mutations (INSERT, UPDATE, DELETE).
5
+ * Every non-derived event must have a corresponding materializer that defines
6
+ * how it affects the SQLite database state.
7
+ *
8
+ * Materializers are pure functions that receive the event arguments and return
9
+ * SQL operations. They can also query current state when needed for complex
10
+ * transformations.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { State } from '@livestore/livestore'
15
+ *
16
+ * const materializers = State.SQLite.materializers(events, {
17
+ * 'v1.TodoCreated': ({ id, text }) =>
18
+ * tables.todos.insert({ id, text, completed: false }),
19
+ *
20
+ * 'v1.TodoCompleted': ({ id }) =>
21
+ * tables.todos.update({ completed: true }).where({ id }),
22
+ *
23
+ * 'v1.TodoDeleted': ({ id, deletedAt }) =>
24
+ * tables.todos.update({ deletedAt }).where({ id }),
25
+ * })
26
+ * ```
27
+ * @module
28
+ */
29
+ /**
30
+ * Type-safe wrapper for defining a single materializer.
31
+ *
32
+ * Useful when defining materializers separately from the `materializers()` builder.
33
+ * The first argument provides type inference for the second.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const todoCreatedHandler = defineMaterializer(
38
+ * events.todoCreated,
39
+ * ({ id, text }) => tables.todos.insert({ id, text, completed: false })
40
+ * )
41
+ * ```
42
+ */
43
+ export const defineMaterializer = (_eventDef, materializer) => {
44
+ return materializer;
45
+ };
46
+ /**
47
+ * Builder function for creating a type-safe materializer map.
48
+ *
49
+ * This is the primary way to define materializers in LiveStore. It ensures:
50
+ * - Every non-derived event has a corresponding materializer
51
+ * - Materializer argument types match their event schemas
52
+ * - Derived events are excluded from the required handlers
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * import { State } from '@livestore/livestore'
57
+ *
58
+ * const handlers = State.SQLite.materializers(events, {
59
+ * // Handler for each event - argument types are inferred
60
+ * 'v1.TodoCreated': ({ id, text, completed }) =>
61
+ * tables.todos.insert({ id, text, completed }),
62
+ *
63
+ * 'v1.TodoUpdated': ({ id, text }) =>
64
+ * tables.todos.update({ text }).where({ id }),
65
+ *
66
+ * // Can return multiple operations
67
+ * 'v1.UserCreatedWithDefaults': ({ userId, name }) => [
68
+ * tables.users.insert({ id: userId, name }),
69
+ * tables.settings.insert({ userId, theme: 'light' }),
70
+ * ],
71
+ *
72
+ * // Can query current state
73
+ * 'v1.TodoToggled': ({ id }, { query }) => {
74
+ * const todo = query(tables.todos.select().where({ id }).first())
75
+ * return tables.todos.update({ completed: !todo?.completed }).where({ id })
76
+ * },
77
+ * })
78
+ * ```
79
+ */
80
+ export const materializers = (_eventDefRecord, handlers) => {
81
+ return handlers;
82
+ };
83
+ //# sourceMappingURL=materializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializer.js","sourceRoot":"","sources":["../../../src/schema/EventDef/materializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6EH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,YAAqC,EACZ,EAAE;IAC3B,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,eAA6B,EAC7B,QAOC,EACD,EAAE;IACF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './define.ts';
2
+ export * from './deprecated.ts';
3
+ export * from './event-def.ts';
4
+ export * from './facts.ts';
5
+ export * from './materializer.ts';
6
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/schema/EventDef/mod.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from "./define.js";
2
+ export * from "./deprecated.js";
3
+ export * from "./event-def.js";
4
+ export * from "./facts.js";
5
+ export * from "./materializer.js";
6
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/schema/EventDef/mod.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,136 @@
1
+ import { Brand, Schema as S } from '@livestore/utils/effect';
2
+ import { type Type as Global } from './global.ts';
3
+ /** Branded integer type for client-local sequence numbers. */
4
+ export type Type = Brand.Branded<number, 'ClientEventSequenceNumber'>;
5
+ /** Effect Schema for encoding/decoding client sequence numbers. */
6
+ export declare const Schema: S.brand<S.Int, "ClientEventSequenceNumber">;
7
+ /**
8
+ * Creates a branded client sequence number from a plain number.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const clientSeq = EventSequenceNumber.Client.make(1)
13
+ * ```
14
+ */
15
+ export declare const make: Brand.Constructor<Type>;
16
+ /**
17
+ * Default client sequence number (0). Used for confirmed/synced events.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const defaultSeq = EventSequenceNumber.Client.DEFAULT // 0
22
+ * ```
23
+ */
24
+ export declare const DEFAULT: Type;
25
+ /** Default rebase generation (0). Increments each time the client rebases unconfirmed events. */
26
+ export declare const REBASE_GENERATION_DEFAULT = 0;
27
+ /**
28
+ * Composite event sequence number consisting of global + client + rebaseGeneration.
29
+ * Used for client-side event tracking with support for unconfirmed local events.
30
+ *
31
+ * For event notation documentation, see: contributor-docs/events-notation.md
32
+ */
33
+ export type Composite = {
34
+ global: Global;
35
+ client: Type;
36
+ /**
37
+ * Generation integer that is incremented whenever the client rebased.
38
+ * Remains constant for all subsequent events until another rebase occurs.
39
+ */
40
+ rebaseGeneration: number;
41
+ };
42
+ /** Input type for creating a Composite sequence number. Allows omitting rebaseGeneration (defaults to 0). */
43
+ export type CompositeInput = Composite | (Omit<typeof CompositeSchema.Encoded, 'rebaseGeneration'> & {
44
+ rebaseGeneration?: number;
45
+ });
46
+ /** A pair of sequence numbers representing an event and its parent. */
47
+ export type CompositePair = {
48
+ seqNum: Composite;
49
+ parentSeqNum: Composite;
50
+ };
51
+ /**
52
+ * Compare two composite sequence numbers.
53
+ * Comparison hierarchy: global > client > rebaseGeneration
54
+ */
55
+ export declare const compare: (a: Composite, b: Composite) => number;
56
+ /**
57
+ * Convert a composite sequence number to a string representation.
58
+ *
59
+ * For notation documentation, see: contributor-docs/events-notation.md
60
+ */
61
+ export declare const toString: (seqNum: Composite) => string;
62
+ /**
63
+ * Convert a string representation of a sequence number to a Composite.
64
+ * Parses strings in the format: e{global}[.{client}][r{rebaseGeneration}]
65
+ * Examples: "e0", "e0r1", "e0.1", "e0.1r1"
66
+ *
67
+ * For full notation documentation, see: contributor-docs/events-notation.md
68
+ */
69
+ export declare const fromString: (str: string) => Composite;
70
+ /** Creates a Composite sequence number from a global sequence number (client=0, rebaseGeneration=0). */
71
+ export declare const fromGlobal: (seqNum: Global) => Composite;
72
+ /** Returns true if two Composite sequence numbers are structurally equal. */
73
+ export declare const isEqual: (a: Composite, b: Composite) => boolean;
74
+ /** Returns true if `a` is strictly greater than `b` (compares global, then client). */
75
+ export declare const isGreaterThan: (a: Composite, b: Composite) => boolean;
76
+ /** Returns true if `a` is greater than or equal to `b` (compares global, then client). */
77
+ export declare const isGreaterThanOrEqual: (a: Composite, b: Composite) => boolean;
78
+ /** Returns the larger of two Composite sequence numbers. */
79
+ export declare const max: (a: Composite, b: Composite) => Composite;
80
+ /** Returns the difference between two Composite sequence numbers (a - b) for global and client components. */
81
+ export declare const diff: (a: Composite, b: Composite) => {
82
+ global: number;
83
+ client: number;
84
+ };
85
+ /**
86
+ * Schema for the composite event sequence number.
87
+ * NOTE: Client mutation events with a non-0 client id won't be synced to the sync backend.
88
+ */
89
+ declare const CompositeSchema: S.Struct<{
90
+ readonly global: S.brand<S.Int, "GlobalEventSequenceNumber">;
91
+ /** Only increments for client-local events */
92
+ readonly client: S.brand<S.Int, "ClientEventSequenceNumber">;
93
+ readonly rebaseGeneration: S.Int;
94
+ }>;
95
+ /**
96
+ * Effect Schema for the composite event sequence number (global + client + rebaseGeneration).
97
+ * Also includes a `make` helper for creating validated Composite values.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const seqNum: EventSequenceNumber.Client.Composite = {
102
+ * global: EventSequenceNumber.Global.make(5),
103
+ * client: EventSequenceNumber.Client.DEFAULT,
104
+ * rebaseGeneration: 0
105
+ * }
106
+ *
107
+ * const validated = EventSequenceNumber.Client.Composite.make({ global: 5, client: 0, rebaseGeneration: 0 })
108
+ * ```
109
+ */
110
+ export declare const Composite: S.Struct<{
111
+ readonly global: S.brand<S.Int, "GlobalEventSequenceNumber">;
112
+ /** Only increments for client-local events */
113
+ readonly client: S.brand<S.Int, "ClientEventSequenceNumber">;
114
+ readonly rebaseGeneration: S.Int;
115
+ }> & {
116
+ make: (seqNum: CompositeInput) => Composite;
117
+ };
118
+ /** The root sequence number (global=0, client=0, rebaseGeneration=0). Parent of the first event. */
119
+ export declare const ROOT: {
120
+ global: Global;
121
+ client: Type;
122
+ rebaseGeneration: number;
123
+ };
124
+ /**
125
+ * Computes the next sequence number and its parent based on the current position.
126
+ *
127
+ * For client-only events (isClientOnly=true): increments the client component, keeps global.
128
+ * For global events (isClientOnly=false): increments global, resets client to 0.
129
+ */
130
+ export declare const nextPair: ({ seqNum, isClientOnly, rebaseGeneration, }: {
131
+ seqNum: Composite;
132
+ isClientOnly: boolean;
133
+ rebaseGeneration?: number;
134
+ }) => CompositePair;
135
+ export {};
136
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/schema/EventSequenceNumber/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EAAE,KAAK,IAAI,IAAI,MAAM,EAA8C,MAAM,aAAa,CAAA;AAE7F,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAIrE,mEAAmE;AACnE,eAAO,MAAM,MAAM,6CAA+D,CAAA;AAElF;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,yBAAc,CAAA;AAE/B;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,MAAU,CAAA;AAE9B,iGAAiG;AACjG,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,IAAI,CAAA;IACZ;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,6GAA6G;AAC7G,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE9F,uEAAuE;AACvE,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,SAAS,CAAA;CAAE,CAAA;AAE1E;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,WAQjD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,SAAS,WAKzC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,SAyCxC,CAAA;AAED,wGAAwG;AACxG,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,SAI1C,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,OAAO,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,YAC2C,CAAA;AAE7F,uFAAuF;AACvF,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,YAEvD,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,oBAAoB,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,YAE9D,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,GAAG,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,cAE7C,CAAA;AAED,8GAA8G;AAC9G,eAAO,MAAM,IAAI,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS;;;CAK9C,CAAA;AAED;;;GAGG;AACH,QAAA,MAAM,eAAe;;IAEnB,8CAA8C;;;EAMkB,CAAA;AAelE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS;;IApCpB,8CAA8C;;;;mBAYjB,cAAc,KAAG,SAAS;CAwBuB,CAAA;AAEhF,oGAAoG;AACpG,eAAO,MAAM,IAAI;;;;CAII,CAAA;AAErB;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,6CAItB;IACD,MAAM,EAAE,SAAS,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,aAqBH,CAAA"}