@livestore/common 0.4.0-dev.9 → 0.4.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 (513) 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/WorkerTransportError.d.ts +11 -0
  6. package/dist/WorkerTransportError.d.ts.map +1 -0
  7. package/dist/WorkerTransportError.js +11 -0
  8. package/dist/WorkerTransportError.js.map +1 -0
  9. package/dist/adapter-types.d.ts +37 -7
  10. package/dist/adapter-types.d.ts.map +1 -1
  11. package/dist/adapter-types.js +27 -1
  12. package/dist/adapter-types.js.map +1 -1
  13. package/dist/bounded-collections.d.ts.map +1 -1
  14. package/dist/bounded-collections.js +6 -4
  15. package/dist/bounded-collections.js.map +1 -1
  16. package/dist/debug-info.d.ts.map +1 -1
  17. package/dist/debug-info.js +33 -6
  18. package/dist/debug-info.js.map +1 -1
  19. package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
  20. package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
  21. package/dist/devtools/devtools-compatibility.test.js +15 -0
  22. package/dist/devtools/devtools-compatibility.test.js.map +1 -0
  23. package/dist/devtools/devtools-messages-client-session.d.ts +55 -24
  24. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  25. package/dist/devtools/devtools-messages-client-session.js +22 -5
  26. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  27. package/dist/devtools/devtools-messages-common.d.ts +11 -14
  28. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  29. package/dist/devtools/devtools-messages-common.js +7 -9
  30. package/dist/devtools/devtools-messages-common.js.map +1 -1
  31. package/dist/devtools/devtools-messages-leader.d.ts +65 -30
  32. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  33. package/dist/devtools/devtools-messages-leader.js +29 -11
  34. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  35. package/dist/devtools/devtools-sessioninfo.d.ts +14 -2
  36. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  37. package/dist/devtools/devtools-sessioninfo.js +7 -4
  38. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  39. package/dist/devtools/mod.d.ts +13 -2
  40. package/dist/devtools/mod.d.ts.map +1 -1
  41. package/dist/devtools/mod.js +10 -3
  42. package/dist/devtools/mod.js.map +1 -1
  43. package/dist/errors.d.ts +48 -18
  44. package/dist/errors.d.ts.map +1 -1
  45. package/dist/errors.js +20 -12
  46. package/dist/errors.js.map +1 -1
  47. package/dist/index.d.ts +4 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +4 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/leader-thread/LeaderSyncProcessor.d.ts +53 -6
  52. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  53. package/dist/leader-thread/LeaderSyncProcessor.js +325 -257
  54. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  55. package/dist/leader-thread/RejectedPushError.d.ts +107 -0
  56. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
  57. package/dist/leader-thread/RejectedPushError.js +78 -0
  58. package/dist/leader-thread/RejectedPushError.js.map +1 -0
  59. package/dist/leader-thread/connection.js +1 -1
  60. package/dist/leader-thread/connection.js.map +1 -1
  61. package/dist/leader-thread/eventlog.d.ts +19 -14
  62. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  63. package/dist/leader-thread/eventlog.js +78 -18
  64. package/dist/leader-thread/eventlog.js.map +1 -1
  65. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
  66. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  67. package/dist/leader-thread/leader-worker-devtools.js +90 -58
  68. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  69. package/dist/leader-thread/make-leader-thread-layer.d.ts +15 -7
  70. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  71. package/dist/leader-thread/make-leader-thread-layer.js +49 -17
  72. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  73. package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
  74. package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
  75. package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
  76. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
  77. package/dist/leader-thread/materialize-event.d.ts +1 -1
  78. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  79. package/dist/leader-thread/materialize-event.js +28 -9
  80. package/dist/leader-thread/materialize-event.js.map +1 -1
  81. package/dist/leader-thread/mod.d.ts +1 -0
  82. package/dist/leader-thread/mod.d.ts.map +1 -1
  83. package/dist/leader-thread/mod.js +1 -0
  84. package/dist/leader-thread/mod.js.map +1 -1
  85. package/dist/leader-thread/recreate-db.d.ts +2 -2
  86. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  87. package/dist/leader-thread/recreate-db.js +6 -6
  88. package/dist/leader-thread/recreate-db.js.map +1 -1
  89. package/dist/leader-thread/shutdown-channel.d.ts +2 -2
  90. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  91. package/dist/leader-thread/shutdown-channel.js +2 -2
  92. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  93. package/dist/leader-thread/stream-events.d.ts +56 -0
  94. package/dist/leader-thread/stream-events.d.ts.map +1 -0
  95. package/dist/leader-thread/stream-events.js +167 -0
  96. package/dist/leader-thread/stream-events.js.map +1 -0
  97. package/dist/leader-thread/types.d.ts +95 -17
  98. package/dist/leader-thread/types.d.ts.map +1 -1
  99. package/dist/leader-thread/types.js +13 -0
  100. package/dist/leader-thread/types.js.map +1 -1
  101. package/dist/logging.d.ts +40 -0
  102. package/dist/logging.d.ts.map +1 -0
  103. package/dist/logging.js +33 -0
  104. package/dist/logging.js.map +1 -0
  105. package/dist/make-client-session.d.ts +5 -3
  106. package/dist/make-client-session.d.ts.map +1 -1
  107. package/dist/make-client-session.js +7 -4
  108. package/dist/make-client-session.js.map +1 -1
  109. package/dist/materializer-helper.d.ts +6 -6
  110. package/dist/materializer-helper.d.ts.map +1 -1
  111. package/dist/materializer-helper.js +18 -8
  112. package/dist/materializer-helper.js.map +1 -1
  113. package/dist/otel.d.ts +2 -1
  114. package/dist/otel.d.ts.map +1 -1
  115. package/dist/otel.js +7 -2
  116. package/dist/otel.js.map +1 -1
  117. package/dist/rematerialize-from-eventlog.d.ts +3 -3
  118. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  119. package/dist/rematerialize-from-eventlog.js +40 -29
  120. package/dist/rematerialize-from-eventlog.js.map +1 -1
  121. package/dist/schema/EventDef/define.d.ts +161 -0
  122. package/dist/schema/EventDef/define.d.ts.map +1 -0
  123. package/dist/schema/EventDef/define.js +140 -0
  124. package/dist/schema/EventDef/define.js.map +1 -0
  125. package/dist/schema/EventDef/deprecated.d.ts +99 -0
  126. package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
  127. package/dist/schema/EventDef/deprecated.js +144 -0
  128. package/dist/schema/EventDef/deprecated.js.map +1 -0
  129. package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
  130. package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
  131. package/dist/schema/EventDef/deprecated.test.js +95 -0
  132. package/dist/schema/EventDef/deprecated.test.js.map +1 -0
  133. package/dist/schema/EventDef/event-def.d.ts +110 -0
  134. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  135. package/dist/schema/EventDef/event-def.js +2 -0
  136. package/dist/schema/EventDef/event-def.js.map +1 -0
  137. package/dist/schema/EventDef/facts.d.ts +118 -0
  138. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  139. package/dist/schema/EventDef/facts.js +53 -0
  140. package/dist/schema/EventDef/facts.js.map +1 -0
  141. package/dist/schema/EventDef/materializer.d.ts +155 -0
  142. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  143. package/dist/schema/EventDef/materializer.js +83 -0
  144. package/dist/schema/EventDef/materializer.js.map +1 -0
  145. package/dist/schema/EventDef/mod.d.ts +6 -0
  146. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  147. package/dist/schema/EventDef/mod.js +6 -0
  148. package/dist/schema/EventDef/mod.js.map +1 -0
  149. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  150. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  151. package/dist/schema/EventSequenceNumber/client.js +193 -0
  152. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  153. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  154. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  155. package/dist/schema/EventSequenceNumber/global.js +14 -0
  156. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  157. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  158. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  159. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  160. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  161. package/dist/schema/EventSequenceNumber.test.js +44 -44
  162. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  163. package/dist/schema/{LiveStoreEvent.d.ts → LiveStoreEvent/client.d.ts} +102 -111
  164. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  165. package/dist/schema/LiveStoreEvent/client.js +176 -0
  166. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  167. package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
  168. package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
  169. package/dist/schema/LiveStoreEvent/client.test.js +111 -0
  170. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
  171. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  172. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  173. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  174. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  175. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  176. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  177. package/dist/schema/LiveStoreEvent/global.js +31 -0
  178. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  179. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  180. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  181. package/dist/schema/LiveStoreEvent/input.js +26 -0
  182. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  183. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  184. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  185. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  186. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  187. package/dist/schema/events.d.ts +1 -1
  188. package/dist/schema/events.d.ts.map +1 -1
  189. package/dist/schema/events.js +1 -1
  190. package/dist/schema/events.js.map +1 -1
  191. package/dist/schema/mod.d.ts +6 -4
  192. package/dist/schema/mod.d.ts.map +1 -1
  193. package/dist/schema/mod.js +5 -4
  194. package/dist/schema/mod.js.map +1 -1
  195. package/dist/schema/schema.d.ts +16 -1
  196. package/dist/schema/schema.d.ts.map +1 -1
  197. package/dist/schema/schema.js +32 -4
  198. package/dist/schema/schema.js.map +1 -1
  199. package/dist/schema/state/sqlite/client-document-def.d.ts +2 -1
  200. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  201. package/dist/schema/state/sqlite/client-document-def.js +36 -15
  202. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  203. package/dist/schema/state/sqlite/client-document-def.test.js +121 -2
  204. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  205. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  206. package/dist/schema/state/sqlite/column-annotations.js +1 -1
  207. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  208. package/dist/schema/state/sqlite/column-annotations.test.js +2 -2
  209. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  210. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  211. package/dist/schema/state/sqlite/column-def.js +96 -47
  212. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  213. package/dist/schema/state/sqlite/column-def.test.js +51 -12
  214. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  215. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  216. package/dist/schema/state/sqlite/column-spec.js +30 -12
  217. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  218. package/dist/schema/state/sqlite/column-spec.test.js +24 -15
  219. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  220. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +2 -2
  221. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  222. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +16 -10
  223. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  224. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +15 -4
  225. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  226. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +1 -1
  227. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  228. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +1 -1
  229. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  230. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -1
  231. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  232. package/dist/schema/state/sqlite/mod.d.ts +2 -2
  233. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  234. package/dist/schema/state/sqlite/mod.js +5 -7
  235. package/dist/schema/state/sqlite/mod.js.map +1 -1
  236. package/dist/schema/state/sqlite/query-builder/api.d.ts +51 -22
  237. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  238. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  239. package/dist/schema/state/sqlite/query-builder/astToSql.js +99 -22
  240. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  241. package/dist/schema/state/sqlite/query-builder/impl.d.ts +1 -1
  242. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  243. package/dist/schema/state/sqlite/query-builder/impl.js +28 -15
  244. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  245. package/dist/schema/state/sqlite/query-builder/impl.test.js +231 -93
  246. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  247. package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
  248. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  249. package/dist/schema/state/sqlite/schema-helpers.js +24 -14
  250. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  251. package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
  252. package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
  253. package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
  254. package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
  255. package/dist/schema/state/sqlite/{system-tables.d.ts → system-tables/eventlog-tables.d.ts} +21 -450
  256. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  257. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  258. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  259. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  260. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  261. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  262. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  263. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +456 -0
  264. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  265. package/dist/schema/state/sqlite/system-tables/state-tables.js +55 -0
  266. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  267. package/dist/schema/state/sqlite/table-def.d.ts +5 -3
  268. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  269. package/dist/schema/state/sqlite/table-def.js +1 -1
  270. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  271. package/dist/schema/state/sqlite/table-def.test.js +92 -3
  272. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  273. package/dist/schema/unknown-events.d.ts +47 -0
  274. package/dist/schema/unknown-events.d.ts.map +1 -0
  275. package/dist/schema/unknown-events.js +69 -0
  276. package/dist/schema/unknown-events.js.map +1 -0
  277. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
  278. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
  279. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
  280. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
  281. package/dist/schema-management/common.js +2 -2
  282. package/dist/schema-management/common.js.map +1 -1
  283. package/dist/schema-management/migrations.d.ts +32 -2
  284. package/dist/schema-management/migrations.d.ts.map +1 -1
  285. package/dist/schema-management/migrations.js +38 -6
  286. package/dist/schema-management/migrations.js.map +1 -1
  287. package/dist/schema-management/validate-schema.d.ts +3 -3
  288. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  289. package/dist/schema-management/validate-schema.js +2 -2
  290. package/dist/schema-management/validate-schema.js.map +1 -1
  291. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  292. package/dist/sql-queries/sql-queries.js +18 -6
  293. package/dist/sql-queries/sql-queries.js.map +1 -1
  294. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  295. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  296. package/dist/sqlite-db-helper.js +3 -3
  297. package/dist/sqlite-db-helper.js.map +1 -1
  298. package/dist/sqlite-types.d.ts +5 -5
  299. package/dist/sqlite-types.d.ts.map +1 -1
  300. package/dist/sqlite-types.js.map +1 -1
  301. package/dist/sync/ClientSessionSyncProcessor.d.ts +12 -12
  302. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  303. package/dist/sync/ClientSessionSyncProcessor.js +99 -114
  304. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  305. package/dist/sync/errors.d.ts +0 -33
  306. package/dist/sync/errors.d.ts.map +1 -1
  307. package/dist/sync/errors.js +5 -22
  308. package/dist/sync/errors.js.map +1 -1
  309. package/dist/sync/index.d.ts +2 -0
  310. package/dist/sync/index.d.ts.map +1 -1
  311. package/dist/sync/index.js +2 -0
  312. package/dist/sync/index.js.map +1 -1
  313. package/dist/sync/mock-sync-backend.d.ts +10 -8
  314. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  315. package/dist/sync/mock-sync-backend.js +71 -69
  316. package/dist/sync/mock-sync-backend.js.map +1 -1
  317. package/dist/sync/next/compact-events.d.ts.map +1 -1
  318. package/dist/sync/next/compact-events.js +11 -12
  319. package/dist/sync/next/compact-events.js.map +1 -1
  320. package/dist/sync/next/facts.d.ts +5 -5
  321. package/dist/sync/next/facts.d.ts.map +1 -1
  322. package/dist/sync/next/facts.js +7 -8
  323. package/dist/sync/next/facts.js.map +1 -1
  324. package/dist/sync/next/history-dag-common.d.ts +54 -15
  325. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  326. package/dist/sync/next/history-dag-common.js +198 -9
  327. package/dist/sync/next/history-dag-common.js.map +1 -1
  328. package/dist/sync/next/history-dag.d.ts.map +1 -1
  329. package/dist/sync/next/history-dag.js +11 -11
  330. package/dist/sync/next/history-dag.js.map +1 -1
  331. package/dist/sync/next/rebase-events.d.ts +5 -5
  332. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  333. package/dist/sync/next/rebase-events.js +6 -6
  334. package/dist/sync/next/rebase-events.js.map +1 -1
  335. package/dist/sync/next/test/compact-events.calculator.test.js +2 -2
  336. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  337. package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
  338. package/dist/sync/next/test/compact-events.test.js +2 -2
  339. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  340. package/dist/sync/next/test/event-fixtures.d.ts +2 -2
  341. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  342. package/dist/sync/next/test/event-fixtures.js +11 -11
  343. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  344. package/dist/sync/sync-backend-kv.d.ts +3 -3
  345. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  346. package/dist/sync/sync-backend-kv.js +3 -3
  347. package/dist/sync/sync-backend-kv.js.map +1 -1
  348. package/dist/sync/sync-backend.d.ts +33 -13
  349. package/dist/sync/sync-backend.d.ts.map +1 -1
  350. package/dist/sync/sync-backend.js +38 -1
  351. package/dist/sync/sync-backend.js.map +1 -1
  352. package/dist/sync/sync.d.ts +23 -2
  353. package/dist/sync/sync.d.ts.map +1 -1
  354. package/dist/sync/syncstate.d.ts +55 -55
  355. package/dist/sync/syncstate.d.ts.map +1 -1
  356. package/dist/sync/syncstate.js +80 -98
  357. package/dist/sync/syncstate.js.map +1 -1
  358. package/dist/sync/syncstate.test.js +221 -132
  359. package/dist/sync/syncstate.test.js.map +1 -1
  360. package/dist/sync/transport-chunking.d.ts +36 -0
  361. package/dist/sync/transport-chunking.d.ts.map +1 -0
  362. package/dist/sync/transport-chunking.js +56 -0
  363. package/dist/sync/transport-chunking.js.map +1 -0
  364. package/dist/sync/validate-push-payload.d.ts +2 -2
  365. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  366. package/dist/sync/validate-push-payload.js +4 -6
  367. package/dist/sync/validate-push-payload.js.map +1 -1
  368. package/dist/testing/event-factory.d.ts +3 -3
  369. package/dist/testing/event-factory.d.ts.map +1 -1
  370. package/dist/testing/event-factory.js +5 -7
  371. package/dist/testing/event-factory.js.map +1 -1
  372. package/dist/util.js +2 -2
  373. package/dist/util.js.map +1 -1
  374. package/dist/version.d.ts +24 -5
  375. package/dist/version.d.ts.map +1 -1
  376. package/dist/version.js +25 -8
  377. package/dist/version.js.map +1 -1
  378. package/package.json +67 -15
  379. package/src/ClientSessionLeaderThreadProxy.ts +27 -12
  380. package/src/WorkerTransportError.ts +12 -0
  381. package/src/adapter-types.ts +50 -7
  382. package/src/bounded-collections.ts +6 -5
  383. package/src/debug-info.ts +37 -6
  384. package/src/devtools/devtools-compatibility.test.ts +18 -0
  385. package/src/devtools/devtools-messages-client-session.ts +22 -4
  386. package/src/devtools/devtools-messages-common.ts +7 -12
  387. package/src/devtools/devtools-messages-leader.ts +29 -10
  388. package/src/devtools/devtools-sessioninfo.ts +8 -5
  389. package/src/devtools/mod.ts +11 -2
  390. package/src/errors.ts +32 -24
  391. package/src/index.ts +4 -1
  392. package/src/leader-thread/LeaderSyncProcessor.ts +523 -373
  393. package/src/leader-thread/RejectedPushError.ts +106 -0
  394. package/src/leader-thread/connection.ts +1 -1
  395. package/src/leader-thread/eventlog.ts +112 -39
  396. package/src/leader-thread/leader-worker-devtools.ts +201 -120
  397. package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
  398. package/src/leader-thread/make-leader-thread-layer.ts +125 -40
  399. package/src/leader-thread/materialize-event.ts +40 -10
  400. package/src/leader-thread/mod.ts +1 -0
  401. package/src/leader-thread/recreate-db.ts +7 -7
  402. package/src/leader-thread/shutdown-channel.ts +4 -8
  403. package/src/leader-thread/stream-events.ts +206 -0
  404. package/src/leader-thread/types.ts +68 -18
  405. package/src/logging.ts +62 -0
  406. package/src/make-client-session.ts +11 -5
  407. package/src/materializer-helper.ts +27 -16
  408. package/src/otel.ts +13 -2
  409. package/src/rematerialize-from-eventlog.ts +61 -51
  410. package/src/schema/EventDef/define.ts +217 -0
  411. package/src/schema/EventDef/deprecated.test.ts +129 -0
  412. package/src/schema/EventDef/deprecated.ts +175 -0
  413. package/src/schema/EventDef/event-def.ts +125 -0
  414. package/src/schema/EventDef/facts.ts +135 -0
  415. package/src/schema/EventDef/materializer.ts +172 -0
  416. package/src/schema/EventDef/mod.ts +5 -0
  417. package/src/schema/EventSequenceNumber/client.ts +257 -0
  418. package/src/schema/EventSequenceNumber/global.ts +19 -0
  419. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  420. package/src/schema/EventSequenceNumber.test.ts +72 -53
  421. package/src/schema/LiveStoreEvent/client.test.ts +129 -0
  422. package/src/schema/LiveStoreEvent/client.ts +235 -0
  423. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  424. package/src/schema/LiveStoreEvent/global.ts +45 -0
  425. package/src/schema/LiveStoreEvent/input.ts +63 -0
  426. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  427. package/src/schema/events.ts +1 -1
  428. package/src/schema/mod.ts +6 -4
  429. package/src/schema/schema.ts +46 -5
  430. package/src/schema/state/sqlite/client-document-def.test.ts +144 -5
  431. package/src/schema/state/sqlite/client-document-def.ts +47 -34
  432. package/src/schema/state/sqlite/column-annotations.test.ts +3 -2
  433. package/src/schema/state/sqlite/column-annotations.ts +2 -1
  434. package/src/schema/state/sqlite/column-def.test.ts +66 -12
  435. package/src/schema/state/sqlite/column-def.ts +119 -47
  436. package/src/schema/state/sqlite/column-spec.test.ts +32 -17
  437. package/src/schema/state/sqlite/column-spec.ts +37 -11
  438. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +2 -2
  439. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +2 -1
  440. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +41 -15
  441. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +13 -19
  442. package/src/schema/state/sqlite/mod.ts +7 -8
  443. package/src/schema/state/sqlite/query-builder/api.ts +55 -17
  444. package/src/schema/state/sqlite/query-builder/astToSql.ts +110 -21
  445. package/src/schema/state/sqlite/query-builder/impl.test.ts +267 -93
  446. package/src/schema/state/sqlite/query-builder/impl.ts +26 -13
  447. package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
  448. package/src/schema/state/sqlite/schema-helpers.ts +30 -22
  449. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  450. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  451. package/src/schema/state/sqlite/system-tables/state-tables.ts +69 -0
  452. package/src/schema/state/sqlite/table-def.test.ts +114 -3
  453. package/src/schema/state/sqlite/table-def.ts +16 -22
  454. package/src/schema/unknown-events.ts +131 -0
  455. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
  456. package/src/schema-management/common.ts +2 -2
  457. package/src/schema-management/migrations.ts +42 -9
  458. package/src/schema-management/validate-schema.ts +3 -3
  459. package/src/sql-queries/sql-queries.ts +18 -6
  460. package/src/sql-queries/sql-query-builder.ts +1 -0
  461. package/src/sqlite-db-helper.ts +3 -3
  462. package/src/sqlite-types.ts +6 -5
  463. package/src/sync/ClientSessionSyncProcessor.ts +152 -142
  464. package/src/sync/errors.ts +12 -24
  465. package/src/sync/index.ts +2 -0
  466. package/src/sync/mock-sync-backend.ts +146 -104
  467. package/src/sync/next/compact-events.ts +10 -11
  468. package/src/sync/next/facts.ts +13 -14
  469. package/src/sync/next/history-dag-common.ts +280 -26
  470. package/src/sync/next/history-dag.ts +17 -13
  471. package/src/sync/next/rebase-events.ts +12 -12
  472. package/src/sync/next/test/compact-events.calculator.test.ts +3 -2
  473. package/src/sync/next/test/compact-events.test.ts +4 -3
  474. package/src/sync/next/test/event-fixtures.ts +13 -13
  475. package/src/sync/sync-backend-kv.ts +4 -3
  476. package/src/sync/sync-backend.ts +66 -17
  477. package/src/sync/sync.ts +24 -2
  478. package/src/sync/syncstate.test.ts +583 -419
  479. package/src/sync/syncstate.ts +127 -122
  480. package/src/sync/transport-chunking.ts +90 -0
  481. package/src/sync/validate-push-payload.ts +6 -8
  482. package/src/testing/event-factory.ts +10 -12
  483. package/src/util.ts +2 -2
  484. package/src/version.ts +33 -8
  485. package/dist/schema/EventDef.d.ts +0 -126
  486. package/dist/schema/EventDef.d.ts.map +0 -1
  487. package/dist/schema/EventDef.js +0 -46
  488. package/dist/schema/EventDef.js.map +0 -1
  489. package/dist/schema/EventSequenceNumber.d.ts +0 -80
  490. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  491. package/dist/schema/EventSequenceNumber.js +0 -139
  492. package/dist/schema/EventSequenceNumber.js.map +0 -1
  493. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  494. package/dist/schema/LiveStoreEvent.js +0 -147
  495. package/dist/schema/LiveStoreEvent.js.map +0 -1
  496. package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
  497. package/dist/schema/state/sqlite/system-tables.js +0 -81
  498. package/dist/schema/state/sqlite/system-tables.js.map +0 -1
  499. package/dist/sync/next/graphology.d.ts +0 -8
  500. package/dist/sync/next/graphology.d.ts.map +0 -1
  501. package/dist/sync/next/graphology.js +0 -30
  502. package/dist/sync/next/graphology.js.map +0 -1
  503. package/dist/sync/next/graphology_.d.ts +0 -3
  504. package/dist/sync/next/graphology_.d.ts.map +0 -1
  505. package/dist/sync/next/graphology_.js +0 -3
  506. package/dist/sync/next/graphology_.js.map +0 -1
  507. package/src/schema/EventDef.ts +0 -222
  508. package/src/schema/EventSequenceNumber.ts +0 -199
  509. package/src/schema/LiveStoreEvent.ts +0 -286
  510. package/src/schema/state/sqlite/system-tables.ts +0 -106
  511. package/src/sync/next/ambient.d.ts +0 -3
  512. package/src/sync/next/graphology.ts +0 -41
  513. package/src/sync/next/graphology_.ts +0 -2
@@ -33,9 +33,9 @@
33
33
 
34
34
  import { Schema } from '@livestore/utils/effect'
35
35
 
36
- import type { EventDef } from '../schema/EventDef.ts'
37
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
38
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
36
+ import type { EventDef } from '../schema/EventDef/mod.ts'
37
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts'
38
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
39
39
 
40
40
  export interface ClientIdentity {
41
41
  clientId: string
@@ -80,7 +80,7 @@ export const makeFactory =
80
80
  client,
81
81
  startSeq = 1,
82
82
  initialParent = 'root',
83
- }: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal> => {
83
+ }: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.Global.Encoded> => {
84
84
  let nextSeq = startSeq
85
85
  let parentRef: SequenceValue = initialParent
86
86
 
@@ -95,7 +95,7 @@ export const makeFactory =
95
95
 
96
96
  const current = () => ({ seq: nextSeq, parent: parentRef })
97
97
 
98
- const factories: Partial<EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>> = {}
98
+ const factories: Partial<EventFactories<TDefs, LiveStoreEvent.Global.Encoded>> = {}
99
99
 
100
100
  for (const [name, eventDef] of Object.entries(eventDefs) as [keyof TDefs, TDefs[keyof TDefs]][]) {
101
101
  const next = (args: EventFactoriesArgs<TDefs>[typeof name]) => {
@@ -103,14 +103,12 @@ export const makeFactory =
103
103
  const encodedArgs = Schema.encodeSync(eventDef.schema)(decoded.args)
104
104
  const encoded = eventDef.encoded(encodedArgs)
105
105
 
106
- const event = LiveStoreEvent.AnyEncodedGlobal.make({
106
+ const event = LiveStoreEvent.Global.Encoded.make({
107
107
  name: encoded.name,
108
108
  args: encoded.args,
109
- seqNum: EventSequenceNumber.globalEventSequenceNumber(nextSeq),
109
+ seqNum: EventSequenceNumber.Global.make(nextSeq),
110
110
  parentSeqNum:
111
- parentRef === 'root'
112
- ? EventSequenceNumber.ROOT.global
113
- : EventSequenceNumber.globalEventSequenceNumber(parentRef),
111
+ parentRef === 'root' ? EventSequenceNumber.Client.ROOT.global : EventSequenceNumber.Global.make(parentRef),
114
112
  clientId: client.clientId,
115
113
  sessionId: client.sessionId,
116
114
  })
@@ -126,8 +124,8 @@ export const makeFactory =
126
124
  advanceTo,
127
125
  setParent,
128
126
  current,
129
- } as EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>[typeof name]
127
+ } as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>[typeof name]
130
128
  }
131
129
 
132
- return factories as EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>
130
+ return factories as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>
133
131
  }
package/src/util.ts CHANGED
@@ -47,11 +47,11 @@ export const sql = (template: TemplateStringsArray, ...args: unknown[]): string
47
47
  * TODO: Also make sure that the SQLite binding limit of 1000 is respected
48
48
  */
49
49
  export const prepareBindValues = (values: Bindable, statement: string): PreparedBindValues => {
50
- if (Array.isArray(values)) return values as any as PreparedBindValues
50
+ if (Array.isArray(values) === true) return values as any as PreparedBindValues
51
51
 
52
52
  const result: ParamsObject = {}
53
53
  for (const [key, value] of Object.entries(values)) {
54
- if (statement.includes(key)) {
54
+ if (statement.includes(key) === true) {
55
55
  result[`$${key}`] = value
56
56
  }
57
57
  }
package/src/version.ts CHANGED
@@ -1,14 +1,39 @@
1
- // TODO bring back when Expo and Playwright supports `with` imports
2
- // import packageJson from '../package.json' with { type: 'json' }
3
- // export const liveStoreVersion = packageJson.version
1
+ import pkg from '../package.json' with { type: 'json' }
4
2
 
5
- export const liveStoreVersion = '0.4.0-dev.9' as const
3
+ /**
4
+ * Current LiveStore package version used for display, release assets, and install guidance.
5
+ *
6
+ * Can be overridden at runtime via `globalThis.__LIVESTORE_VERSION_OVERRIDE__` for testing display-only version values.
7
+ */
8
+ export const liveStoreVersion: string = (globalThis as any).__LIVESTORE_VERSION_OVERRIDE__ ?? pkg.version
9
+
10
+ export const devtoolsProtocolVersion: number =
11
+ (globalThis as any).__LIVESTORE_DEVTOOLS_PROTOCOL_VERSION_OVERRIDE__ ?? 1
12
+
13
+ export const supportedDevtoolsProtocolVersions: ReadonlyArray<number> = [devtoolsProtocolVersion]
14
+
15
+ export const resolveDevtoolsProtocolVersion = (version: number | undefined): number => version ?? 1
16
+
17
+ export const isDevtoolsProtocolVersionSupported = (
18
+ version: number | undefined,
19
+ supportedVersions: ReadonlyArray<number> = supportedDevtoolsProtocolVersions,
20
+ ): boolean => supportedVersions.includes(resolveDevtoolsProtocolVersion(version))
6
21
 
7
22
  /**
8
- * This version number is incremented whenever the internal storage format changes in a breaking way.
9
- * Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
23
+ * CRITICAL: Increment this version whenever you modify client-side EVENTLOG table schemas.
24
+ *
25
+ * Used to generate database file names (e.g., `eventlog@6.db`, `state@6.db`) across all client adapters.
26
+ *
27
+ * Bump required when:
28
+ * - Modifying eventlog system tables (eventlogMetaTable, syncStatusTable) in schema/state/sqlite/system-tables/eventlog-tables.ts
29
+ * - Changing columns, types, constraints, or indexes in eventlog tables
30
+ *
31
+ * Bump NOT required when:
32
+ * - Modifying STATE table schemas (auto-migrated via hash-based detection and rebuilt from eventlog)
33
+ * - Changing query patterns or client-side implementation details
34
+ *
35
+ * ⚠️ CRITICAL: Eventlog changes without bumping this version cause permanent data loss!
10
36
  *
11
- * While LiveStore is in beta, this might happen more frequently.
12
- * In the future, LiveStore will provide a migration path for older database files to avoid the impression of data loss.
37
+ * Impact: Version changes trigger a "soft reset" - old data becomes inaccessible but remains on disk.
13
38
  */
14
39
  export const liveStoreStorageFormatVersion = 6
@@ -1,126 +0,0 @@
1
- import type { SingleOrReadonlyArray } from '@livestore/utils';
2
- import { Schema } from '@livestore/utils/effect';
3
- import type { BindValues } from '../sql-queries/sql-queries.ts';
4
- import type { ParamsObject } from '../util.ts';
5
- import type * as LiveStoreEvent from './LiveStoreEvent.ts';
6
- import type { QueryBuilder } from './state/sqlite/query-builder/mod.ts';
7
- export type EventDefMap = {
8
- map: Map<string, EventDef.Any>;
9
- };
10
- export type EventDefRecord = {
11
- [name: string]: EventDef.Any;
12
- };
13
- export type EventDef<TName extends string, TType, TEncoded = TType, TDerived extends boolean = false> = {
14
- name: TName;
15
- schema: Schema.Schema<TType, TEncoded>;
16
- options: {
17
- /**
18
- * When set to true, the mutation won't be synced across clients but
19
- */
20
- clientOnly: boolean;
21
- /** Warning: This feature is not fully implemented yet */
22
- facts: FactsCallback<TType> | undefined;
23
- derived: TDerived;
24
- };
25
- /** Helper function to construct a partial event */
26
- (args: TType): {
27
- name: TName;
28
- args: TType;
29
- };
30
- /** Helper function to construct a partial encoded event */
31
- encoded: (args: TEncoded) => {
32
- name: TName;
33
- args: TEncoded;
34
- };
35
- readonly Event: {
36
- name: TName;
37
- args: TType;
38
- };
39
- };
40
- export type FactsCallback<TTo> = (args: TTo, currentFacts: EventDefFacts) => {
41
- modify: {
42
- set: Iterable<EventDefFactInput>;
43
- unset: Iterable<EventDefFactInput>;
44
- };
45
- require: Iterable<EventDefFactInput>;
46
- };
47
- export declare namespace EventDef {
48
- type Any = EventDef<string, any, any, boolean>;
49
- type AnyWithoutFn = Pick<Any, 'name' | 'schema' | 'options'>;
50
- }
51
- export type EventDefKey = string;
52
- export type EventDefFact = string;
53
- export type EventDefFacts = ReadonlyMap<string, any>;
54
- export type EventDefFactsGroup = {
55
- modifySet: EventDefFacts;
56
- modifyUnset: EventDefFacts;
57
- /**
58
- * Events on independent "dependency" branches are commutative which can facilitate more prioritized syncing
59
- */
60
- depRequire: EventDefFacts;
61
- depRead: EventDefFacts;
62
- };
63
- export type EventDefFactsSnapshot = Map<string, any>;
64
- export type EventDefFactInput = string | readonly [string, any];
65
- export declare const defineFacts: <TRecord extends Record<string, EventDefFactInput | ((...args: any[]) => EventDefFactInput)>>(record: TRecord) => TRecord;
66
- export type DefineEventOptions<TTo, TDerived extends boolean = false> = {
67
- /** Warning: This feature is not fully implemented yet */
68
- facts?: (args: TTo, currentFacts: EventDefFacts) => {
69
- modify?: {
70
- set?: Iterable<EventDefFactInput>;
71
- unset?: Iterable<EventDefFactInput>;
72
- };
73
- /**
74
- * Two purposes: constrain history and constrain compaction
75
- */
76
- require?: Iterable<EventDefFactInput>;
77
- };
78
- /**
79
- * When set to true, the event won't be synced over the network
80
- */
81
- clientOnly?: boolean;
82
- derived?: TDerived;
83
- };
84
- export declare const defineEvent: <TName extends string, TType, TEncoded = TType, TDerived extends boolean = false>(args: {
85
- name: TName;
86
- schema: Schema.Schema<TType, TEncoded>;
87
- } & DefineEventOptions<TType, TDerived>) => EventDef<TName, TType, TEncoded, TDerived>;
88
- export declare const synced: <TName extends string, TType, TEncoded = TType>(args: {
89
- name: TName;
90
- schema: Schema.Schema<TType, TEncoded>;
91
- } & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
92
- export declare const clientOnly: <TName extends string, TType, TEncoded = TType>(args: {
93
- name: TName;
94
- schema: Schema.Schema<TType, TEncoded>;
95
- } & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
96
- export type MaterializerResult = {
97
- sql: string;
98
- bindValues: BindValues;
99
- writeTables?: ReadonlySet<string>;
100
- } | QueryBuilder.Any | string;
101
- export type MaterializerContextQuery = {
102
- (args: {
103
- query: string;
104
- bindValues: ParamsObject;
105
- }): ReadonlyArray<unknown>;
106
- <TResult>(qb: QueryBuilder<TResult, any, any>): TResult;
107
- };
108
- export type Materializer<TEventDef extends EventDef.AnyWithoutFn = EventDef.AnyWithoutFn> = (event: TEventDef['schema']['Type'], context: {
109
- currentFacts: EventDefFacts;
110
- eventDef: TEventDef;
111
- /** Can be used to query the current state */
112
- query: MaterializerContextQuery;
113
- /** The full LiveStore event with clientId, sessionId, etc. */
114
- event: LiveStoreEvent.AnyDecoded;
115
- }) => SingleOrReadonlyArray<MaterializerResult>;
116
- export declare const defineMaterializer: <TEventDef extends EventDef.AnyWithoutFn>(_eventDef: TEventDef, materializer: Materializer<TEventDef>) => Materializer<TEventDef>;
117
- export declare const materializers: <TInputRecord extends Record<string, EventDef.AnyWithoutFn>>(_eventDefRecord: TInputRecord, handlers: { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
118
- name: TEventName;
119
- }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
120
- name: TEventName;
121
- }>>; }) => { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
122
- name: TEventName;
123
- }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
124
- name: TEventName;
125
- }>>; };
126
- //# sourceMappingURL=EventDef.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventDef.d.ts","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { shouldNeverHappen } from '@livestore/utils';
2
- import { Schema } from '@livestore/utils/effect';
3
- export const defineFacts = (record) => record;
4
- export const defineEvent = (args) => {
5
- const { name, schema, ...options } = args;
6
- const makePartialEvent = (args) => {
7
- const res = Schema.validateEither(schema)(args);
8
- if (res._tag === 'Left') {
9
- shouldNeverHappen(`Invalid event args for event '${name}':`, res.left.message, '\n');
10
- }
11
- return { name: name, args };
12
- };
13
- Object.defineProperty(makePartialEvent, 'name', { value: name });
14
- Object.defineProperty(makePartialEvent, 'schema', { value: schema });
15
- Object.defineProperty(makePartialEvent, 'encoded', {
16
- value: (args) => ({ name: name, args }),
17
- });
18
- Object.defineProperty(makePartialEvent, 'options', {
19
- value: {
20
- clientOnly: options?.clientOnly ?? false,
21
- facts: options?.facts
22
- ? (args, currentFacts) => {
23
- const res = options.facts(args, currentFacts);
24
- return {
25
- modify: {
26
- set: res.modify?.set ? new Set(res.modify.set) : new Set(),
27
- unset: res.modify?.unset ? new Set(res.modify.unset) : new Set(),
28
- },
29
- require: res.require ? new Set(res.require) : new Set(),
30
- };
31
- }
32
- : undefined,
33
- derived: options?.derived ?? false,
34
- },
35
- });
36
- return makePartialEvent;
37
- };
38
- export const synced = (args) => defineEvent({ ...args, clientOnly: false });
39
- export const clientOnly = (args) => defineEvent({ ...args, clientOnly: true });
40
- export const defineMaterializer = (_eventDef, materializer) => {
41
- return materializer;
42
- };
43
- export const materializers = (_eventDefRecord, handlers) => {
44
- return handlers;
45
- };
46
- //# sourceMappingURL=EventDef.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventDef.js","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- import { Brand, Schema } from '@livestore/utils/effect';
2
- export type ClientEventSequenceNumber = Brand.Branded<number, 'ClientEventSequenceNumber'>;
3
- export declare const localEventSequenceNumber: Brand.Brand.Constructor<ClientEventSequenceNumber>;
4
- export declare const ClientEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
5
- export type GlobalEventSequenceNumber = Brand.Branded<number, 'GlobalEventSequenceNumber'>;
6
- export declare const globalEventSequenceNumber: Brand.Brand.Constructor<GlobalEventSequenceNumber>;
7
- export declare const GlobalEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
8
- export declare const clientDefault: ClientEventSequenceNumber;
9
- export declare const rebaseGenerationDefault = 0;
10
- /**
11
- * LiveStore event sequence number value consisting of a globally unique event sequence number
12
- * and a client sequence number.
13
- *
14
- * The client sequence number is only used for clientOnly events and starts from 0 for each global sequence number.
15
- */
16
- export type EventSequenceNumber = {
17
- global: GlobalEventSequenceNumber;
18
- client: ClientEventSequenceNumber;
19
- /**
20
- * Generation integer that is incremented whenever the client rebased.
21
- * Starts from and resets to 0 for each global sequence number.
22
- */
23
- rebaseGeneration: number;
24
- };
25
- export type EventSequenceNumberInput = EventSequenceNumber | (Omit<typeof EventSequenceNumber.Encoded, 'rebaseGeneration'> & {
26
- rebaseGeneration?: number;
27
- });
28
- /**
29
- * NOTE: Client mutation events with a non-0 client id, won't be synced to the sync backend.
30
- */
31
- export declare const EventSequenceNumber: Schema.Struct<{
32
- global: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
33
- /** Only increments for clientOnly events */
34
- client: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
35
- rebaseGeneration: typeof Schema.Int;
36
- }>;
37
- /**
38
- * Compare two event sequence numbers i.e. checks if the first event sequence number is less than the second.
39
- * Comparison hierarchy: global > client > rebaseGeneration
40
- */
41
- export declare const compare: (a: EventSequenceNumber, b: EventSequenceNumber) => number;
42
- /**
43
- * Convert an event sequence number to a string representation.
44
- */
45
- export declare const toString: (seqNum: EventSequenceNumber) => string;
46
- /**
47
- * Convert a string representation of an event sequence number to an event sequence number.
48
- * Parses strings in the format: e{global}[+{client}][r{rebaseGeneration}]
49
- * Examples: "e0", "e0r1", "e0+1", "e0+1r1"
50
- */
51
- export declare const fromString: (str: string) => EventSequenceNumber;
52
- export declare const fromGlobal: (seqNum: GlobalEventSequenceNumber) => {
53
- global: GlobalEventSequenceNumber;
54
- client: ClientEventSequenceNumber;
55
- rebaseGeneration: number;
56
- };
57
- export declare const isEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
58
- export type EventSequenceNumberPair = {
59
- seqNum: EventSequenceNumber;
60
- parentSeqNum: EventSequenceNumber;
61
- };
62
- export declare const ROOT: {
63
- global: GlobalEventSequenceNumber;
64
- client: ClientEventSequenceNumber;
65
- rebaseGeneration: number;
66
- };
67
- export declare const isGreaterThan: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
68
- export declare const isGreaterThanOrEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
69
- export declare const max: (a: EventSequenceNumber, b: EventSequenceNumber) => EventSequenceNumber;
70
- export declare const diff: (a: EventSequenceNumber, b: EventSequenceNumber) => {
71
- global: number;
72
- client: number;
73
- };
74
- export declare const make: (seqNum: EventSequenceNumberInput) => EventSequenceNumber;
75
- export declare const nextPair: ({ seqNum, isClient, rebaseGeneration, }: {
76
- seqNum: EventSequenceNumber;
77
- isClient: boolean;
78
- rebaseGeneration?: number;
79
- }) => EventSequenceNumberPair;
80
- //# sourceMappingURL=EventSequenceNumber.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventSequenceNumber.d.ts","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvD,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,wBAAwB,oDAA6C,CAAA;AAClF,eAAO,MAAM,yBAAyB,sFAAyD,CAAA;AAE/F,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,yBAAyB,oDAA6C,CAAA;AACnF,eAAO,MAAM,yBAAyB,sFAA0D,CAAA;AAEhG,eAAO,MAAM,aAAa,EAAe,yBAAyB,CAAA;AAElE,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,yBAAyB,CAAA;IACjC,MAAM,EAAE,yBAAyB,CAAA;IACjC;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAGlG;;GAEG;AACH,eAAO,MAAM,mBAAmB;;IAE9B,4CAA4C;;;EAU5C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,WAQrE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,mBAAmB,WAKnD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,mBAyCxC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,yBAAyB;;;;CAI1D,CAAA;AAEF,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YACuB,CAAA;AAE7F,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAExG,eAAO,MAAM,IAAI;YACK,yBAAyB;;;CAGhB,CAAA;AAE/B,eAAO,MAAM,aAAa,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAE3E,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAElF,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,wBAEjE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB;;;CAKlE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,wBAAwB,KAAG,mBAOvD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,yCAItB;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,uBAqBH,CAAA"}
@@ -1,139 +0,0 @@
1
- import { Brand, Schema } from '@livestore/utils/effect';
2
- export const localEventSequenceNumber = Brand.nominal();
3
- export const ClientEventSequenceNumber = Schema.fromBrand(localEventSequenceNumber)(Schema.Int);
4
- export const globalEventSequenceNumber = Brand.nominal();
5
- export const GlobalEventSequenceNumber = Schema.fromBrand(globalEventSequenceNumber)(Schema.Int);
6
- export const clientDefault = 0;
7
- export const rebaseGenerationDefault = 0;
8
- // TODO adjust name to `ClientEventSequenceNumber`
9
- /**
10
- * NOTE: Client mutation events with a non-0 client id, won't be synced to the sync backend.
11
- */
12
- export const EventSequenceNumber = Schema.Struct({
13
- global: GlobalEventSequenceNumber,
14
- /** Only increments for clientOnly events */
15
- client: ClientEventSequenceNumber,
16
- // TODO also provide a way to see "confirmation level" of event (e.g. confirmed by leader/sync backend)
17
- // Client only
18
- rebaseGeneration: Schema.Int,
19
- }).annotations({
20
- title: 'LiveStore.EventSequenceNumber',
21
- pretty: () => (seqNum) => toString(seqNum),
22
- });
23
- /**
24
- * Compare two event sequence numbers i.e. checks if the first event sequence number is less than the second.
25
- * Comparison hierarchy: global > client > rebaseGeneration
26
- */
27
- export const compare = (a, b) => {
28
- if (a.global !== b.global) {
29
- return a.global - b.global;
30
- }
31
- if (a.client !== b.client) {
32
- return a.client - b.client;
33
- }
34
- return a.rebaseGeneration - b.rebaseGeneration;
35
- };
36
- /**
37
- * Convert an event sequence number to a string representation.
38
- */
39
- export const toString = (seqNum) => {
40
- const rebaseGenerationStr = seqNum.rebaseGeneration > 0 ? `r${seqNum.rebaseGeneration}` : '';
41
- return seqNum.client === 0
42
- ? `e${seqNum.global}${rebaseGenerationStr}`
43
- : `e${seqNum.global}+${seqNum.client}${rebaseGenerationStr}`;
44
- };
45
- /**
46
- * Convert a string representation of an event sequence number to an event sequence number.
47
- * Parses strings in the format: e{global}[+{client}][r{rebaseGeneration}]
48
- * Examples: "e0", "e0r1", "e0+1", "e0+1r1"
49
- */
50
- export const fromString = (str) => {
51
- if (!str.startsWith('e')) {
52
- throw new Error('Invalid event sequence number string: must start with "e"');
53
- }
54
- // Remove the 'e' prefix
55
- const remaining = str.slice(1);
56
- // Parse rebase generation if present
57
- let rebaseGeneration = rebaseGenerationDefault;
58
- let withoutRebase = remaining;
59
- const rebaseMatch = remaining.match(/r(\d+)$/);
60
- if (rebaseMatch !== null) {
61
- rebaseGeneration = Number.parseInt(rebaseMatch[1], 10);
62
- withoutRebase = remaining.slice(0, -rebaseMatch[0].length);
63
- }
64
- // Parse global and client parts
65
- const parts = withoutRebase.split('+');
66
- // Validate that parts contain only digits (and possibly empty for client)
67
- if (parts[0] === '' || !/^\d+$/.test(parts[0])) {
68
- throw new Error('Invalid event sequence number string: invalid number format');
69
- }
70
- if (parts.length > 1 && parts[1] !== undefined && (parts[1] === '' || !/^\d+$/.test(parts[1]))) {
71
- throw new Error('Invalid event sequence number string: invalid number format');
72
- }
73
- const global = Number.parseInt(parts[0], 10);
74
- const client = parts.length > 1 && parts[1] !== undefined ? Number.parseInt(parts[1], 10) : 0;
75
- if (Number.isNaN(global) || Number.isNaN(client) || Number.isNaN(rebaseGeneration)) {
76
- throw new TypeError('Invalid event sequence number string: invalid number format');
77
- }
78
- return {
79
- global: global,
80
- client: client,
81
- rebaseGeneration,
82
- };
83
- };
84
- export const fromGlobal = (seqNum) => ({
85
- global: seqNum,
86
- client: clientDefault,
87
- rebaseGeneration: rebaseGenerationDefault,
88
- });
89
- export const isEqual = (a, b) => a.global === b.global && a.client === b.client && a.rebaseGeneration === b.rebaseGeneration;
90
- export const ROOT = {
91
- global: 0,
92
- client: clientDefault,
93
- rebaseGeneration: rebaseGenerationDefault,
94
- };
95
- export const isGreaterThan = (a, b) => {
96
- return a.global > b.global || (a.global === b.global && a.client > b.client);
97
- };
98
- export const isGreaterThanOrEqual = (a, b) => {
99
- return a.global > b.global || (a.global === b.global && a.client >= b.client);
100
- };
101
- export const max = (a, b) => {
102
- return a.global > b.global || (a.global === b.global && a.client > b.client) ? a : b;
103
- };
104
- export const diff = (a, b) => {
105
- return {
106
- global: a.global - b.global,
107
- client: a.client - b.client,
108
- };
109
- };
110
- export const make = (seqNum) => {
111
- return Schema.is(EventSequenceNumber)(seqNum)
112
- ? seqNum
113
- : Schema.decodeSync(EventSequenceNumber)({
114
- ...seqNum,
115
- rebaseGeneration: seqNum.rebaseGeneration ?? rebaseGenerationDefault,
116
- });
117
- };
118
- export const nextPair = ({ seqNum, isClient, rebaseGeneration, }) => {
119
- if (isClient) {
120
- return {
121
- seqNum: {
122
- global: seqNum.global,
123
- client: (seqNum.client + 1),
124
- rebaseGeneration: rebaseGeneration ?? seqNum.rebaseGeneration,
125
- },
126
- parentSeqNum: seqNum,
127
- };
128
- }
129
- return {
130
- seqNum: {
131
- global: (seqNum.global + 1),
132
- client: clientDefault,
133
- rebaseGeneration: rebaseGenerationDefault,
134
- },
135
- // NOTE we always point to `client: 0` for non-clientOnly events
136
- parentSeqNum: { global: seqNum.global, client: clientDefault, rebaseGeneration: seqNum.rebaseGeneration },
137
- };
138
- };
139
- //# sourceMappingURL=EventSequenceNumber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventSequenceNumber.js","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveStoreEvent.d.ts","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}