@livestore/common 0.4.0 → 0.5.0-dev.1

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 (501) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +1 -1
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/MaterializationJournal.d.ts +44 -0
  5. package/dist/MaterializationJournal.d.ts.map +1 -0
  6. package/dist/MaterializationJournal.js +112 -0
  7. package/dist/MaterializationJournal.js.map +1 -0
  8. package/dist/StateHead.d.ts +26 -0
  9. package/dist/StateHead.d.ts.map +1 -0
  10. package/dist/StateHead.js +50 -0
  11. package/dist/StateHead.js.map +1 -0
  12. package/dist/WorkerTransportError.d.ts +3 -3
  13. package/dist/WorkerTransportError.d.ts.map +1 -1
  14. package/dist/WorkerTransportError.js +3 -3
  15. package/dist/WorkerTransportError.js.map +1 -1
  16. package/dist/__tests__/fixture.d.ts +8 -8
  17. package/dist/__tests__/fixture.d.ts.map +1 -1
  18. package/dist/__tests__/fixture.js +4 -4
  19. package/dist/__tests__/fixture.js.map +1 -1
  20. package/dist/adapter-types.d.ts +33 -57
  21. package/dist/adapter-types.d.ts.map +1 -1
  22. package/dist/adapter-types.js +24 -41
  23. package/dist/adapter-types.js.map +1 -1
  24. package/dist/bounded-collections.d.ts.map +1 -1
  25. package/dist/bounded-collections.js.map +1 -1
  26. package/dist/debug-info.d.ts +56 -56
  27. package/dist/debug-info.d.ts.map +1 -1
  28. package/dist/debug-info.js +32 -44
  29. package/dist/debug-info.js.map +1 -1
  30. package/dist/defs.d.ts +9 -9
  31. package/dist/defs.js +2 -2
  32. package/dist/devtools/devtools-compatibility.test.js +2 -1
  33. package/dist/devtools/devtools-compatibility.test.js.map +1 -1
  34. package/dist/devtools/devtools-messages-client-session.d.ts +522 -334
  35. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  36. package/dist/devtools/devtools-messages-client-session.js +80 -78
  37. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  38. package/dist/devtools/devtools-messages-common.d.ts +27 -27
  39. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  40. package/dist/devtools/devtools-messages-common.js +6 -6
  41. package/dist/devtools/devtools-messages-common.js.map +1 -1
  42. package/dist/devtools/devtools-messages-leader.d.ts +410 -348
  43. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  44. package/dist/devtools/devtools-messages-leader.js +105 -93
  45. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  46. package/dist/devtools/devtools-messages.js +3 -3
  47. package/dist/devtools/devtools-sessioninfo.d.ts +18 -19
  48. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  49. package/dist/devtools/devtools-sessioninfo.js +8 -5
  50. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  51. package/dist/devtools/mod.d.ts +4 -5
  52. package/dist/devtools/mod.d.ts.map +1 -1
  53. package/dist/devtools/mod.js +12 -8
  54. package/dist/devtools/mod.js.map +1 -1
  55. package/dist/errors.d.ts +45 -69
  56. package/dist/errors.d.ts.map +1 -1
  57. package/dist/errors.js +19 -17
  58. package/dist/errors.js.map +1 -1
  59. package/dist/index.d.ts +4 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +22 -19
  62. package/dist/index.js.map +1 -1
  63. package/dist/leader-thread/LeaderSyncProcessor.d.ts +87 -18
  64. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  65. package/dist/leader-thread/LeaderSyncProcessor.js +548 -480
  66. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  67. package/dist/leader-thread/RejectedPushError.d.ts +72 -41
  68. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -1
  69. package/dist/leader-thread/RejectedPushError.js +25 -6
  70. package/dist/leader-thread/RejectedPushError.js.map +1 -1
  71. package/dist/leader-thread/connection.d.ts +1 -0
  72. package/dist/leader-thread/connection.d.ts.map +1 -1
  73. package/dist/leader-thread/connection.js +11 -10
  74. package/dist/leader-thread/connection.js.map +1 -1
  75. package/dist/leader-thread/eventlog.d.ts +15 -5
  76. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  77. package/dist/leader-thread/eventlog.js +19 -19
  78. package/dist/leader-thread/eventlog.js.map +1 -1
  79. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  80. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  81. package/dist/leader-thread/leader-worker-devtools.js +36 -20
  82. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  83. package/dist/leader-thread/make-leader-thread-layer.d.ts +15 -5
  84. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  85. package/dist/leader-thread/make-leader-thread-layer.js +62 -58
  86. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  87. package/dist/leader-thread/make-leader-thread-layer.test.js +9 -9
  88. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -1
  89. package/dist/leader-thread/materialize-event.d.ts +2 -1
  90. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  91. package/dist/leader-thread/materialize-event.js +12 -8
  92. package/dist/leader-thread/materialize-event.js.map +1 -1
  93. package/dist/leader-thread/mod.js +9 -9
  94. package/dist/leader-thread/recreate-db.d.ts +5 -1
  95. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  96. package/dist/leader-thread/recreate-db.js +34 -59
  97. package/dist/leader-thread/recreate-db.js.map +1 -1
  98. package/dist/leader-thread/shutdown-channel.d.ts +2 -6
  99. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  100. package/dist/leader-thread/shutdown-channel.js +2 -3
  101. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  102. package/dist/leader-thread/stream-events.d.ts +4 -7
  103. package/dist/leader-thread/stream-events.d.ts.map +1 -1
  104. package/dist/leader-thread/stream-events.js +16 -21
  105. package/dist/leader-thread/stream-events.js.map +1 -1
  106. package/dist/leader-thread/types.d.ts +38 -73
  107. package/dist/leader-thread/types.d.ts.map +1 -1
  108. package/dist/leader-thread/types.js +10 -6
  109. package/dist/leader-thread/types.js.map +1 -1
  110. package/dist/logging.d.ts +5 -30
  111. package/dist/logging.d.ts.map +1 -1
  112. package/dist/logging.js +1 -32
  113. package/dist/logging.js.map +1 -1
  114. package/dist/make-client-session.d.ts +2 -3
  115. package/dist/make-client-session.d.ts.map +1 -1
  116. package/dist/make-client-session.js +5 -5
  117. package/dist/make-client-session.js.map +1 -1
  118. package/dist/materializer-helper.d.ts +0 -1
  119. package/dist/materializer-helper.d.ts.map +1 -1
  120. package/dist/materializer-helper.js +9 -37
  121. package/dist/materializer-helper.js.map +1 -1
  122. package/dist/otel.d.ts +2 -3
  123. package/dist/otel.d.ts.map +1 -1
  124. package/dist/otel.js +2 -7
  125. package/dist/otel.js.map +1 -1
  126. package/dist/rematerialize-from-eventlog.d.ts +3 -1
  127. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  128. package/dist/rematerialize-from-eventlog.js +42 -33
  129. package/dist/rematerialize-from-eventlog.js.map +1 -1
  130. package/dist/schema/EventDef/define.d.ts +6 -6
  131. package/dist/schema/EventDef/define.d.ts.map +1 -1
  132. package/dist/schema/EventDef/define.js +5 -5
  133. package/dist/schema/EventDef/define.js.map +1 -1
  134. package/dist/schema/EventDef/define.test.d.ts +2 -0
  135. package/dist/schema/EventDef/define.test.d.ts.map +1 -0
  136. package/dist/schema/EventDef/define.test.js +23 -0
  137. package/dist/schema/EventDef/define.test.js.map +1 -0
  138. package/dist/schema/EventDef/deprecated.d.ts +8 -13
  139. package/dist/schema/EventDef/deprecated.d.ts.map +1 -1
  140. package/dist/schema/EventDef/deprecated.js +12 -13
  141. package/dist/schema/EventDef/deprecated.js.map +1 -1
  142. package/dist/schema/EventDef/deprecated.test.js +3 -3
  143. package/dist/schema/EventDef/deprecated.test.js.map +1 -1
  144. package/dist/schema/EventDef/event-def.d.ts +1 -1
  145. package/dist/schema/EventDef/event-def.d.ts.map +1 -1
  146. package/dist/schema/EventDef/facts.d.ts.map +1 -1
  147. package/dist/schema/EventDef/materializer.d.ts +2 -2
  148. package/dist/schema/EventDef/materializer.d.ts.map +1 -1
  149. package/dist/schema/EventDef/mod.js +5 -5
  150. package/dist/schema/EventSequenceNumber/client.d.ts +12 -17
  151. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -1
  152. package/dist/schema/EventSequenceNumber/client.js +20 -24
  153. package/dist/schema/EventSequenceNumber/client.js.map +1 -1
  154. package/dist/schema/EventSequenceNumber/global.d.ts +2 -2
  155. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -1
  156. package/dist/schema/EventSequenceNumber/global.js +1 -1
  157. package/dist/schema/EventSequenceNumber/global.js.map +1 -1
  158. package/dist/schema/EventSequenceNumber/mod.js +2 -2
  159. package/dist/schema/EventSequenceNumber.test.js +6 -6
  160. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  161. package/dist/schema/LiveStoreEvent/client.d.ts +58 -187
  162. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -1
  163. package/dist/schema/LiveStoreEvent/client.js +33 -30
  164. package/dist/schema/LiveStoreEvent/client.js.map +1 -1
  165. package/dist/schema/LiveStoreEvent/client.test.js +13 -4
  166. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -1
  167. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +7 -7
  168. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -1
  169. package/dist/schema/LiveStoreEvent/global.d.ts +6 -6
  170. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -1
  171. package/dist/schema/LiveStoreEvent/global.js +2 -2
  172. package/dist/schema/LiveStoreEvent/global.js.map +1 -1
  173. package/dist/schema/LiveStoreEvent/input.d.ts +6 -6
  174. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -1
  175. package/dist/schema/LiveStoreEvent/input.js +3 -3
  176. package/dist/schema/LiveStoreEvent/input.js.map +1 -1
  177. package/dist/schema/LiveStoreEvent/mod.js +4 -4
  178. package/dist/schema/events.js +1 -1
  179. package/dist/schema/mod.d.ts +1 -0
  180. package/dist/schema/mod.d.ts.map +1 -1
  181. package/dist/schema/mod.js +11 -10
  182. package/dist/schema/mod.js.map +1 -1
  183. package/dist/schema/schema.d.ts +1 -1
  184. package/dist/schema/schema.d.ts.map +1 -1
  185. package/dist/schema/schema.js +6 -5
  186. package/dist/schema/schema.js.map +1 -1
  187. package/dist/schema/state/mod.js +2 -2
  188. package/dist/schema/state/sqlite/client-document-def.d.ts +13 -18
  189. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  190. package/dist/schema/state/sqlite/client-document-def.js +30 -27
  191. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  192. package/dist/schema/state/sqlite/client-document-def.test.js +53 -18
  193. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  194. package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
  195. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  196. package/dist/schema/state/sqlite/column-annotations.js +13 -15
  197. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  198. package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
  199. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  200. package/dist/schema/state/sqlite/column-def.d.ts +1 -1
  201. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  202. package/dist/schema/state/sqlite/column-def.js +73 -33
  203. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  204. package/dist/schema/state/sqlite/column-def.test.js +176 -75
  205. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  206. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  207. package/dist/schema/state/sqlite/column-spec.js +1 -1
  208. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  209. package/dist/schema/state/sqlite/column-spec.test.js +4 -4
  210. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  211. package/dist/schema/state/sqlite/db-schema/ast/fingerprint-digest.d.ts +3 -0
  212. package/dist/schema/state/sqlite/db-schema/ast/fingerprint-digest.d.ts.map +1 -0
  213. package/dist/schema/state/sqlite/db-schema/ast/fingerprint-digest.js +5 -0
  214. package/dist/schema/state/sqlite/db-schema/ast/fingerprint-digest.js.map +1 -0
  215. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.d.ts +5 -0
  216. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.d.ts.map +1 -0
  217. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.js +183 -0
  218. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.js.map +1 -0
  219. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.test.d.ts +2 -0
  220. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.test.d.ts.map +1 -0
  221. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.test.js +142 -0
  222. package/dist/schema/state/sqlite/db-schema/ast/fingerprint.test.js.map +1 -0
  223. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +3 -8
  224. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  225. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -73
  226. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  227. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -1
  228. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +9 -9
  229. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  230. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +9 -13
  231. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  232. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +28 -17
  233. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  234. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +13 -11
  235. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  236. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
  237. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  238. package/dist/schema/state/sqlite/db-schema/has-json-string-encoding.d.ts +3 -0
  239. package/dist/schema/state/sqlite/db-schema/has-json-string-encoding.d.ts.map +1 -0
  240. package/dist/schema/state/sqlite/db-schema/has-json-string-encoding.js +6 -0
  241. package/dist/schema/state/sqlite/db-schema/has-json-string-encoding.js.map +1 -0
  242. package/dist/schema/state/sqlite/db-schema/mod.js +2 -2
  243. package/dist/schema/state/sqlite/mod.d.ts +1 -3
  244. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  245. package/dist/schema/state/sqlite/mod.js +11 -10
  246. package/dist/schema/state/sqlite/mod.js.map +1 -1
  247. package/dist/schema/state/sqlite/persistence.d.ts +11 -0
  248. package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
  249. package/dist/schema/state/sqlite/persistence.js +10 -0
  250. package/dist/schema/state/sqlite/persistence.js.map +1 -0
  251. package/dist/schema/state/sqlite/query-builder/api.d.ts +7 -7
  252. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  253. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  254. package/dist/schema/state/sqlite/query-builder/astToSql.js +22 -23
  255. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  256. package/dist/schema/state/sqlite/query-builder/impl.d.ts +1 -1
  257. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  258. package/dist/schema/state/sqlite/query-builder/impl.js +18 -16
  259. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  260. package/dist/schema/state/sqlite/query-builder/impl.test.js +364 -598
  261. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  262. package/dist/schema/state/sqlite/query-builder/mod.js +2 -2
  263. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  264. package/dist/schema/state/sqlite/schema-helpers.js +2 -2
  265. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  266. package/dist/schema/state/sqlite/schema-helpers.test.js +2 -2
  267. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +102 -134
  268. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -1
  269. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +5 -5
  270. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -1
  271. package/dist/schema/state/sqlite/system-tables/mod.js +2 -2
  272. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +380 -115
  273. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -1
  274. package/dist/schema/state/sqlite/system-tables/state-tables.js +47 -6
  275. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -1
  276. package/dist/schema/state/sqlite/table-def.d.ts +17 -20
  277. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  278. package/dist/schema/state/sqlite/table-def.js +72 -6
  279. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  280. package/dist/schema/state/sqlite/table-def.test.js +207 -37
  281. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  282. package/dist/schema/unknown-events.d.ts.map +1 -1
  283. package/dist/schema/unknown-events.js +3 -2
  284. package/dist/schema/unknown-events.js.map +1 -1
  285. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +28 -6
  286. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -1
  287. package/dist/schema-management/common.d.ts.map +1 -1
  288. package/dist/schema-management/common.js +2 -2
  289. package/dist/schema-management/migrations.d.ts +4 -4
  290. package/dist/schema-management/migrations.d.ts.map +1 -1
  291. package/dist/schema-management/migrations.js +9 -9
  292. package/dist/schema-management/migrations.js.map +1 -1
  293. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  294. package/dist/schema-management/validate-schema.js +1 -1
  295. package/dist/session-id-symbol.d.ts +29 -0
  296. package/dist/session-id-symbol.d.ts.map +1 -0
  297. package/dist/session-id-symbol.js +44 -0
  298. package/dist/session-id-symbol.js.map +1 -0
  299. package/dist/sql-queries/index.js +3 -3
  300. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  301. package/dist/sql-queries/sql-queries.js +11 -13
  302. package/dist/sql-queries/sql-queries.js.map +1 -1
  303. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  304. package/dist/sql-queries/sql-query-builder.js +1 -1
  305. package/dist/sql-queries/types.d.ts +6 -7
  306. package/dist/sql-queries/types.d.ts.map +1 -1
  307. package/dist/sql-queries/types.js.map +1 -1
  308. package/dist/sqlite-db-helper.d.ts +23 -3
  309. package/dist/sqlite-db-helper.d.ts.map +1 -1
  310. package/dist/sqlite-db-helper.js +39 -4
  311. package/dist/sqlite-db-helper.js.map +1 -1
  312. package/dist/sqlite-types.d.ts +3 -6
  313. package/dist/sqlite-types.d.ts.map +1 -1
  314. package/dist/sqlite-types.js +3 -3
  315. package/dist/sqlite-types.js.map +1 -1
  316. package/dist/sync/ClientSessionSyncProcessor.d.ts +41 -19
  317. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  318. package/dist/sync/ClientSessionSyncProcessor.js +200 -70
  319. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  320. package/dist/sync/errors.d.ts +12 -18
  321. package/dist/sync/errors.d.ts.map +1 -1
  322. package/dist/sync/errors.js +3 -3
  323. package/dist/sync/errors.js.map +1 -1
  324. package/dist/sync/index.js +6 -6
  325. package/dist/sync/mock-sync-backend.d.ts +2 -3
  326. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  327. package/dist/sync/mock-sync-backend.js +58 -37
  328. package/dist/sync/mock-sync-backend.js.map +1 -1
  329. package/dist/sync/mock-sync-backend.test.d.ts +2 -0
  330. package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
  331. package/dist/sync/mock-sync-backend.test.js +49 -0
  332. package/dist/sync/mock-sync-backend.test.js.map +1 -0
  333. package/dist/sync/next/compact-events.d.ts.map +1 -1
  334. package/dist/sync/next/compact-events.js +3 -3
  335. package/dist/sync/next/facts.d.ts.map +1 -1
  336. package/dist/sync/next/facts.js +1 -1
  337. package/dist/sync/next/history-dag-common.d.ts +5 -1
  338. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  339. package/dist/sync/next/history-dag-common.js +53 -32
  340. package/dist/sync/next/history-dag-common.js.map +1 -1
  341. package/dist/sync/next/history-dag.d.ts.map +1 -1
  342. package/dist/sync/next/history-dag.js +5 -4
  343. package/dist/sync/next/history-dag.js.map +1 -1
  344. package/dist/sync/next/mod.js +5 -5
  345. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  346. package/dist/sync/next/rebase-events.js +2 -2
  347. package/dist/sync/next/test/compact-events.calculator.test.js +6 -6
  348. package/dist/sync/next/test/compact-events.test.js +4 -4
  349. package/dist/sync/next/test/event-fixtures.d.ts +8 -8
  350. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  351. package/dist/sync/next/test/event-fixtures.js +6 -6
  352. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  353. package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
  354. package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
  355. package/dist/sync/next/test/history-dag-common.test.js +73 -0
  356. package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
  357. package/dist/sync/next/test/mod.js +1 -1
  358. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  359. package/dist/sync/sync-backend-kv.js +5 -3
  360. package/dist/sync/sync-backend-kv.js.map +1 -1
  361. package/dist/sync/sync-backend.d.ts +15 -15
  362. package/dist/sync/sync-backend.d.ts.map +1 -1
  363. package/dist/sync/sync-backend.js +10 -6
  364. package/dist/sync/sync-backend.js.map +1 -1
  365. package/dist/sync/sync.d.ts +1 -1
  366. package/dist/sync/sync.d.ts.map +1 -1
  367. package/dist/sync/sync.js +2 -2
  368. package/dist/sync/syncstate.d.ts +100 -176
  369. package/dist/sync/syncstate.d.ts.map +1 -1
  370. package/dist/sync/syncstate.js +36 -39
  371. package/dist/sync/syncstate.js.map +1 -1
  372. package/dist/sync/syncstate.test.js +103 -64
  373. package/dist/sync/syncstate.test.js.map +1 -1
  374. package/dist/sync/transport-chunking.d.ts +15 -16
  375. package/dist/sync/transport-chunking.d.ts.map +1 -1
  376. package/dist/sync/transport-chunking.js +23 -32
  377. package/dist/sync/transport-chunking.js.map +1 -1
  378. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  379. package/dist/sync/validate-push-payload.js +2 -2
  380. package/dist/testing/event-factory.d.ts.map +1 -1
  381. package/dist/testing/event-factory.js +2 -2
  382. package/dist/testing/event-factory.js.map +1 -1
  383. package/dist/testing/mod.js +1 -1
  384. package/dist/util.d.ts +11 -4
  385. package/dist/util.d.ts.map +1 -1
  386. package/dist/util.js +20 -2
  387. package/dist/util.js.map +1 -1
  388. package/dist/version.d.ts.map +1 -1
  389. package/dist/version.js.map +1 -1
  390. package/package.json +40 -57
  391. package/src/ClientSessionLeaderThreadProxy.ts +1 -1
  392. package/src/MaterializationJournal.ts +184 -0
  393. package/src/StateHead.ts +80 -0
  394. package/src/WorkerTransportError.ts +4 -4
  395. package/src/__tests__/fixture.ts +3 -3
  396. package/src/adapter-types.ts +28 -61
  397. package/src/debug-info.ts +53 -70
  398. package/src/defs.ts +2 -2
  399. package/src/devtools/devtools-compatibility.test.ts +1 -0
  400. package/src/devtools/devtools-messages-client-session.ts +56 -65
  401. package/src/devtools/devtools-messages-common.ts +12 -11
  402. package/src/devtools/devtools-messages-leader.ts +71 -69
  403. package/src/devtools/devtools-sessioninfo.ts +13 -11
  404. package/src/devtools/mod.ts +4 -5
  405. package/src/errors.ts +46 -34
  406. package/src/index.ts +8 -1
  407. package/src/leader-thread/LeaderSyncProcessor.ts +777 -650
  408. package/src/leader-thread/RejectedPushError.ts +40 -27
  409. package/src/leader-thread/connection.ts +12 -8
  410. package/src/leader-thread/eventlog.ts +20 -12
  411. package/src/leader-thread/leader-worker-devtools.ts +38 -20
  412. package/src/leader-thread/make-leader-thread-layer.test.ts +7 -7
  413. package/src/leader-thread/make-leader-thread-layer.ts +100 -71
  414. package/src/leader-thread/materialize-event.ts +13 -8
  415. package/src/leader-thread/recreate-db.ts +41 -75
  416. package/src/leader-thread/shutdown-channel.ts +3 -14
  417. package/src/leader-thread/stream-events.ts +102 -101
  418. package/src/leader-thread/types.ts +29 -62
  419. package/src/logging.ts +5 -52
  420. package/src/make-client-session.ts +6 -6
  421. package/src/materializer-helper.ts +7 -36
  422. package/src/otel.ts +5 -14
  423. package/src/rematerialize-from-eventlog.ts +116 -98
  424. package/src/schema/EventDef/define.test.ts +28 -0
  425. package/src/schema/EventDef/define.ts +20 -19
  426. package/src/schema/EventDef/deprecated.test.ts +1 -8
  427. package/src/schema/EventDef/deprecated.ts +17 -20
  428. package/src/schema/EventDef/event-def.ts +2 -4
  429. package/src/schema/EventSequenceNumber/client.ts +20 -24
  430. package/src/schema/EventSequenceNumber/global.ts +1 -1
  431. package/src/schema/EventSequenceNumber.test.ts +5 -5
  432. package/src/schema/LiveStoreEvent/client.test.ts +17 -4
  433. package/src/schema/LiveStoreEvent/client.ts +36 -35
  434. package/src/schema/LiveStoreEvent/for-event-def.ts +7 -7
  435. package/src/schema/LiveStoreEvent/global.ts +1 -1
  436. package/src/schema/LiveStoreEvent/input.ts +6 -6
  437. package/src/schema/mod.ts +1 -0
  438. package/src/schema/schema.ts +4 -3
  439. package/src/schema/state/sqlite/client-document-def.test.ts +55 -20
  440. package/src/schema/state/sqlite/client-document-def.ts +95 -80
  441. package/src/schema/state/sqlite/column-annotations.test.ts +26 -45
  442. package/src/schema/state/sqlite/column-annotations.ts +26 -30
  443. package/src/schema/state/sqlite/column-def.test.ts +213 -77
  444. package/src/schema/state/sqlite/column-def.ts +87 -37
  445. package/src/schema/state/sqlite/column-spec.test.ts +2 -2
  446. package/src/schema/state/sqlite/column-spec.ts +3 -2
  447. package/src/schema/state/sqlite/db-schema/ast/fingerprint-digest.ts +6 -0
  448. package/src/schema/state/sqlite/db-schema/ast/fingerprint.test.ts +209 -0
  449. package/src/schema/state/sqlite/db-schema/ast/fingerprint.ts +225 -0
  450. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +2 -81
  451. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
  452. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -16
  453. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +26 -31
  454. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +35 -21
  455. package/src/schema/state/sqlite/db-schema/has-json-string-encoding.ts +9 -0
  456. package/src/schema/state/sqlite/mod.ts +4 -5
  457. package/src/schema/state/sqlite/persistence.ts +11 -0
  458. package/src/schema/state/sqlite/query-builder/api.ts +9 -9
  459. package/src/schema/state/sqlite/query-builder/astToSql.ts +24 -26
  460. package/src/schema/state/sqlite/query-builder/impl.test.ts +433 -669
  461. package/src/schema/state/sqlite/query-builder/impl.ts +19 -15
  462. package/src/schema/state/sqlite/schema-helpers.ts +1 -1
  463. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +2 -2
  464. package/src/schema/state/sqlite/system-tables/state-tables.ts +54 -3
  465. package/src/schema/state/sqlite/table-def.test.ts +270 -66
  466. package/src/schema/state/sqlite/table-def.ts +112 -45
  467. package/src/schema/unknown-events.ts +3 -2
  468. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +35 -4
  469. package/src/schema-management/migrations.ts +7 -6
  470. package/src/session-id-symbol.ts +59 -0
  471. package/src/sql-queries/sql-queries.ts +9 -13
  472. package/src/sql-queries/types.ts +6 -7
  473. package/src/sqlite-db-helper.ts +64 -2
  474. package/src/sqlite-types.ts +5 -8
  475. package/src/sync/ClientSessionSyncProcessor.ts +303 -119
  476. package/src/sync/errors.ts +14 -12
  477. package/src/sync/mock-sync-backend.test.ts +78 -0
  478. package/src/sync/mock-sync-backend.ts +93 -47
  479. package/src/sync/next/history-dag-common.ts +60 -34
  480. package/src/sync/next/history-dag.ts +4 -1
  481. package/src/sync/next/test/compact-events.calculator.test.ts +2 -2
  482. package/src/sync/next/test/event-fixtures.ts +1 -1
  483. package/src/sync/next/test/history-dag-common.test.ts +87 -0
  484. package/src/sync/sync-backend-kv.ts +4 -2
  485. package/src/sync/sync-backend.ts +15 -15
  486. package/src/sync/sync.ts +1 -1
  487. package/src/sync/syncstate.test.ts +191 -140
  488. package/src/sync/syncstate.ts +63 -53
  489. package/src/sync/transport-chunking.ts +34 -39
  490. package/src/util.ts +19 -9
  491. package/src/version.ts +1 -2
  492. package/dist/schema/state/sqlite/db-schema/hash.d.ts +0 -2
  493. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +0 -1
  494. package/dist/schema/state/sqlite/db-schema/hash.js +0 -15
  495. package/dist/schema/state/sqlite/db-schema/hash.js.map +0 -1
  496. package/dist/sql-queries/misc.d.ts +0 -2
  497. package/dist/sql-queries/misc.d.ts.map +0 -1
  498. package/dist/sql-queries/misc.js +0 -2
  499. package/dist/sql-queries/misc.js.map +0 -1
  500. package/src/schema/state/sqlite/db-schema/hash.ts +0 -13
  501. package/src/sql-queries/misc.ts +0 -2
@@ -2,10 +2,10 @@ import type { Effect, Stream, Subscribable } from '@livestore/utils/effect';
2
2
  import type { StorageMode } from './adapter-types.ts';
3
3
  import type { MigrationsReport } from './defs.ts';
4
4
  import type * as Devtools from './devtools/mod.ts';
5
+ import type { RejectedPushError } from './leader-thread/RejectedPushError.ts';
5
6
  import type { StreamEventsOptions } from './leader-thread/types.ts';
6
7
  import type * as EventSequenceNumber from './schema/EventSequenceNumber/mod.ts';
7
8
  import type { LiveStoreEvent } from './schema/mod.ts';
8
- import type { RejectedPushError } from './leader-thread/RejectedPushError.ts';
9
9
  import type { SyncBackend } from './sync/sync.ts';
10
10
  import type { PayloadUpstream, SyncState } from './sync/syncstate.ts';
11
11
  export interface ClientSessionLeaderThreadProxy {
@@ -1 +1 @@
1
- {"version":3,"file":"ClientSessionLeaderThreadProxy.d.ts","sourceRoot":"","sources":["../src/ClientSessionLeaderThreadProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,KAAK,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,KAAK,mBAAmB,MAAM,qCAAqC,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAErE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,IAAI,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;SAC7C,KAAK,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,OAAO,eAAe,CAAC,IAAI,CAAA;SAAE,CAAC,CAAA;QAC7D,6EAA6E;QAC7E,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QACjG,mCAAmC;QACnC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;KACnF,CAAA;IACD,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE;QACrB,mGAAmG;QACnG,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QACzD,mDAAmD;QACnD,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;QAC3C;;;;WAIG;QACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;KAClC,CAAA;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IACvD,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAC/C,iHAAiH;IACjH,mBAAmB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnF;;;OAGG;IACH,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;CACpE;AAED,eAAO,MAAM,EAAE,GACb,OAAO,8BAA8B,EACrC,UAAU;IAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAA;CAAE,KAC9G,8BAIF,CAAA"}
1
+ {"version":3,"file":"ClientSessionLeaderThreadProxy.d.ts","sourceRoot":"","sources":["../src/ClientSessionLeaderThreadProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,KAAK,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,KAAK,mBAAmB,MAAM,qCAAqC,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAErE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,IAAI,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;SAC7C,KAAK,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,OAAO,eAAe,CAAC,IAAI,CAAA;SAAE,CAAC,CAAA;QAC7D,6EAA6E;QAC7E,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QACjG,mCAAmC;QACnC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;KACnF,CAAA;IACD,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE;QACrB,mGAAmG;QACnG,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QACzD,mDAAmD;QACnD,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;QAC3C;;;;WAIG;QACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;KAClC,CAAA;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IACvD,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAC/C,iHAAiH;IACjH,mBAAmB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnF;;;OAGG;IACH,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;CACpE;AAED,eAAO,MAAM,EAAE,UACN,8BAA8B,YAC3B;IAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAA;CAAE,KAC9G,8BAIF,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { Context, Effect, Layer, Schema } from '@livestore/utils/effect';
2
+ import { type SqliteDb } from './adapter-types.ts';
3
+ import * as EventSequenceNumber from './schema/EventSequenceNumber/mod.ts';
4
+ export declare const TypeId: '~@livestore/common/MaterializationJournal';
5
+ export type TypeId = typeof TypeId;
6
+ export declare const MaterializationJournalErrorTypeId: '~@livestore/common/MaterializationJournalError';
7
+ export declare const isMaterializationJournalError: (u: unknown) => u is MaterializationJournalError;
8
+ declare const MaterializationJournalError_base: Schema.Class<MaterializationJournalError, Schema.TaggedStruct<"MaterializationJournalError", {
9
+ readonly method: Schema.Literals<readonly ["record", "rollback", "discardUpTo"]>;
10
+ readonly cause: Schema.Defect;
11
+ }>, import("effect/Cause").YieldableError>;
12
+ export declare class MaterializationJournalError extends MaterializationJournalError_base {
13
+ readonly [MaterializationJournalErrorTypeId]: "~@livestore/common/MaterializationJournalError";
14
+ }
15
+ export type MaterializationChangeset = {
16
+ _tag: 'changeset';
17
+ data: Uint8Array<ArrayBuffer>;
18
+ } | {
19
+ _tag: 'no-op';
20
+ };
21
+ export type MaterializationRecord = {
22
+ key: EventSequenceNumber.Client.Composite;
23
+ changeset: MaterializationChangeset;
24
+ };
25
+ export interface Service {
26
+ readonly [TypeId]: TypeId;
27
+ /** Stores a materialization record, replacing any record at the same key. */
28
+ record: (record: MaterializationRecord) => Effect.Effect<void, MaterializationJournalError>;
29
+ /** Reverts the keyed materializations in reverse order, then discards their records. */
30
+ rollback: (keys: ReadonlyArray<EventSequenceNumber.Client.Composite>) => Effect.Effect<void, MaterializationJournalError>;
31
+ /** Discards records whose key is less than or equal to `key`, ignoring rebase generation. */
32
+ discardUpTo: (key: EventSequenceNumber.Client.Composite) => Effect.Effect<void, MaterializationJournalError>;
33
+ }
34
+ declare const MaterializationJournal_base: Context.ServiceClass<MaterializationJournal, "@livestore/common/MaterializationJournal", Service>;
35
+ export declare class MaterializationJournal extends MaterializationJournal_base {
36
+ }
37
+ interface Options {
38
+ readonly dbState: SqliteDb;
39
+ }
40
+ export declare const make: ({ dbState }: Options) => Service;
41
+ export declare const layer: (options: Options) => Layer.Layer<MaterializationJournal, never, never>;
42
+ export declare const layerTest: Layer.Layer<MaterializationJournal, never, never>;
43
+ export {};
44
+ //# sourceMappingURL=MaterializationJournal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterializationJournal.d.ts","sourceRoot":"","sources":["../src/MaterializationJournal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA4B,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAElG,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,mBAAmB,MAAM,qCAAqC,CAAA;AAM1E,eAAO,MAAM,MAAM,EAAG,2CAAoD,CAAA;AAC1E,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC,eAAO,MAAM,iCAAiC,EAAG,gDAAyD,CAAA;AAE1G,eAAO,MAAM,6BAA6B,MAAO,OAAO,KAAG,CAAC,IAAI,2BACH,CAAA;;;;;AAE7D,qBAAa,2BAA4B,SAAQ,gCAK/C;IACA,QAAQ,CAAC,CAAC,iCAAiC,CAAC,mDAAoC;CACjF;AAED,MAAM,MAAM,wBAAwB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAE/G,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;IACzC,SAAS,EAAE,wBAAwB,CAAA;CACpC,CAAA;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,6EAA6E;IAC7E,MAAM,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAC3F,wFAAwF;IACxF,QAAQ,EAAE,CACR,IAAI,EAAE,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,KACtD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IACrD,6FAA6F;IAC7F,WAAW,EAAE,CAAC,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;CAC7G;;AAED,qBAAa,sBAAuB,SAAQ,2BAE3C;CAAG;AAEJ,UAAU,OAAO;IACf,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAC3B;AAED,eAAO,MAAM,IAAI,gBAAiB,OAAO,YAqHxC,CAAA;AAED,eAAO,MAAM,KAAK,YAAa,OAAO,sDAAyD,CAAA;AAE/F,eAAO,MAAM,SAAS,mDAQrB,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { Context, Effect, Layer, Predicate, ReadonlyArray, Schema } from '@livestore/utils/effect';
2
+ import { SqliteError } from './adapter-types.js';
3
+ import { execSql, execSqlPrepared } from './leader-thread/connection.js';
4
+ import * as EventSequenceNumber from './schema/EventSequenceNumber/mod.js';
5
+ import { SystemTables } from './schema/mod.js';
6
+ import { findManyRows, insertRow } from './sql-queries/index.js';
7
+ import * as SqliteDbHelper from './sqlite-db-helper.js';
8
+ import { prepareBindValues, sql } from './util.js';
9
+ export const TypeId = '~@livestore/common/MaterializationJournal';
10
+ export const MaterializationJournalErrorTypeId = '~@livestore/common/MaterializationJournalError';
11
+ export const isMaterializationJournalError = (u) => Predicate.hasProperty(u, MaterializationJournalErrorTypeId);
12
+ export class MaterializationJournalError extends Schema.TaggedError(MaterializationJournalErrorTypeId)('MaterializationJournalError', {
13
+ method: Schema.Literals(['record', 'rollback', 'discardUpTo']),
14
+ cause: Schema.Defect(),
15
+ }) {
16
+ [MaterializationJournalErrorTypeId] = MaterializationJournalErrorTypeId;
17
+ }
18
+ export class MaterializationJournal extends Context.Service()('@livestore/common/MaterializationJournal') {
19
+ }
20
+ export const make = ({ dbState }) => {
21
+ const deleteByKeys = Effect.fnUntraced(function* (keys) {
22
+ // Keep DELETE statements below SQLite's bound-parameter limit.
23
+ const keyChunks = ReadonlyArray.chunksOf(100)(keys);
24
+ for (const keyChunk of keyChunks) {
25
+ const placeholders = keyChunk.map(() => '(?, ?, ?)').join(', ');
26
+ const bindValues = keyChunk.flatMap((key) => [key.global, key.client, key.rebaseGeneration]);
27
+ const statement = sql `DELETE FROM ${SystemTables.MATERIALIZATION_JOURNAL_META_TABLE}
28
+ WHERE (seqNumGlobal, seqNumClient, seqNumRebaseGeneration) IN (${placeholders})`;
29
+ yield* execSqlPrepared(dbState, statement, prepareBindValues(bindValues, statement));
30
+ }
31
+ }, SqliteDbHelper.withSavepoint(dbState));
32
+ return MaterializationJournal.of({
33
+ [TypeId]: TypeId,
34
+ record: Effect.fnUntraced(function* (record) {
35
+ yield* deleteByKeys([record.key]);
36
+ // Generate the parameterized INSERT statement
37
+ const [statement, bindValues] = insertRow({
38
+ tableName: SystemTables.MATERIALIZATION_JOURNAL_META_TABLE,
39
+ columns: SystemTables.materializationJournalMetaTable.sqliteDef.columns,
40
+ values: {
41
+ seqNumGlobal: record.key.global,
42
+ seqNumClient: record.key.client,
43
+ seqNumRebaseGeneration: record.key.rebaseGeneration,
44
+ changeset: record.changeset._tag === 'changeset' ? record.changeset.data : null,
45
+ // Legacy processors still expose this column for development diagnostics.
46
+ debug: null,
47
+ },
48
+ });
49
+ yield* execSqlPrepared(dbState, statement, prepareBindValues(bindValues, statement));
50
+ }, SqliteDbHelper.withSavepoint(dbState), Effect.mapError((cause) => new MaterializationJournalError({ method: 'record', cause }))),
51
+ rollback: Effect.fnUntraced(function* (keys) {
52
+ const sortedKeys = keys.toSorted((a, b) => EventSequenceNumber.Client.compare(b, a));
53
+ const rollbackRecords = yield* Effect.forEach(sortedKeys, Effect.fnUntraced(function* (key) {
54
+ const [statement, bindValues] = findManyRows({
55
+ tableName: SystemTables.MATERIALIZATION_JOURNAL_META_TABLE,
56
+ columns: SystemTables.materializationJournalMetaTable.sqliteDef.columns,
57
+ where: {
58
+ seqNumGlobal: key.global,
59
+ seqNumClient: key.client,
60
+ seqNumRebaseGeneration: key.rebaseGeneration,
61
+ },
62
+ limit: 1,
63
+ });
64
+ const preparedBindValues = prepareBindValues(bindValues, statement);
65
+ const row = yield* Effect.try({
66
+ try: () => dbState.select(statement, preparedBindValues)[0],
67
+ catch: (cause) => new SqliteError({ cause, query: { sql: statement, bindValues: preparedBindValues } }),
68
+ });
69
+ if (row === undefined) {
70
+ return yield* new MaterializationJournalError({
71
+ method: 'rollback',
72
+ cause: new Error(`Missing materialization journal record for ${EventSequenceNumber.Client.toString(key)}`),
73
+ });
74
+ }
75
+ return {
76
+ key,
77
+ changeset: row.changeset === null
78
+ ? { _tag: 'no-op' }
79
+ : { _tag: 'changeset', data: row.changeset },
80
+ };
81
+ }));
82
+ for (const record of rollbackRecords) {
83
+ if (record.changeset._tag === 'changeset') {
84
+ const data = record.changeset.data;
85
+ yield* Effect.try({
86
+ try: () => dbState.makeChangeset(data).invert().apply(),
87
+ catch: (cause) => new SqliteError({ cause }),
88
+ });
89
+ }
90
+ }
91
+ yield* deleteByKeys(sortedKeys);
92
+ }, SqliteDbHelper.withSavepoint(dbState), Effect.mapError((cause) => isMaterializationJournalError(cause) === true
93
+ ? cause
94
+ : new MaterializationJournalError({ method: 'rollback', cause }))),
95
+ discardUpTo: Effect.fnUntraced(function* (key) {
96
+ yield* execSql(dbState, sql `DELETE FROM ${SystemTables.MATERIALIZATION_JOURNAL_META_TABLE}
97
+ WHERE seqNumGlobal < ${key.global}
98
+ OR (
99
+ seqNumGlobal = ${key.global}
100
+ AND seqNumClient <= ${key.client}
101
+ )`, {});
102
+ }, SqliteDbHelper.withSavepoint(dbState), Effect.mapError((cause) => new MaterializationJournalError({ method: 'discardUpTo', cause }))),
103
+ });
104
+ };
105
+ export const layer = (options) => Layer.succeed(MaterializationJournal, make(options));
106
+ export const layerTest = Layer.succeed(MaterializationJournal, MaterializationJournal.of({
107
+ [TypeId]: TypeId,
108
+ record: () => Effect.void,
109
+ rollback: () => Effect.void,
110
+ discardUpTo: () => Effect.void,
111
+ }));
112
+ //# sourceMappingURL=MaterializationJournal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterializationJournal.js","sourceRoot":"","sources":["../src/MaterializationJournal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Context, Effect, Layer } from '@livestore/utils/effect';
2
+ import type { SqliteDb, SqliteError } from './adapter-types.ts';
3
+ import * as EventSequenceNumber from './schema/EventSequenceNumber/mod.ts';
4
+ export declare const TypeId: '~@livestore/common/StateHead';
5
+ export type TypeId = typeof TypeId;
6
+ /**
7
+ * Persists and reads the latest event sequence number reflected by the state database.
8
+ */
9
+ export interface Service {
10
+ readonly [TypeId]: TypeId;
11
+ /** Persists the latest event sequence number reflected by the state database. */
12
+ set: (head: EventSequenceNumber.Client.Composite) => Effect.Effect<void, SqliteError>;
13
+ /** Returns the persisted head, or the root when the current-schema table has no row. */
14
+ get: Effect.Effect<EventSequenceNumber.Client.Composite, SqliteError>;
15
+ }
16
+ declare const StateHead_base: Context.ServiceClass<StateHead, "@livestore/common/StateHead", Service>;
17
+ export declare class StateHead extends StateHead_base {
18
+ }
19
+ interface Options {
20
+ readonly dbState: SqliteDb;
21
+ }
22
+ export declare const make: ({ dbState }: Options) => Service;
23
+ export declare const layer: (options: Options) => Layer.Layer<StateHead, never, never>;
24
+ export declare const layerTest: Layer.Layer<StateHead, never, never>;
25
+ export {};
26
+ //# sourceMappingURL=StateHead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateHead.d.ts","sourceRoot":"","sources":["../src/StateHead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,mBAAmB,MAAM,qCAAqC,CAAA;AAI1E,eAAO,MAAM,MAAM,EAAG,8BAAuC,CAAA;AAC7D,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAIlC;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,iFAAiF;IACjF,GAAG,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACrF,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;CACtE;;AAED,qBAAa,SAAU,SAAQ,cAAoE;CAAG;AAEtG,UAAU,OAAO;IACf,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAC3B;AAED,eAAO,MAAM,IAAI,gBAAiB,OAAO,YAsCxC,CAAA;AAED,eAAO,MAAM,KAAK,YAAa,OAAO,yCAA4C,CAAA;AAElF,eAAO,MAAM,SAAS,sCAOrB,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { Context, Effect, Layer } from '@livestore/utils/effect';
2
+ import { execSql, selectSql } from './leader-thread/connection.js';
3
+ import * as EventSequenceNumber from './schema/EventSequenceNumber/mod.js';
4
+ import { SystemTables } from './schema/mod.js';
5
+ import { findManyRows, insertRow } from './sql-queries/index.js';
6
+ export const TypeId = '~@livestore/common/StateHead';
7
+ const STATE_HEAD_ROW_ID = 1;
8
+ export class StateHead extends Context.Service()('@livestore/common/StateHead') {
9
+ }
10
+ export const make = ({ dbState }) => {
11
+ return StateHead.of({
12
+ [TypeId]: TypeId,
13
+ set: (head) => {
14
+ const [statement, bindValues] = insertRow({
15
+ tableName: SystemTables.STATE_HEAD_META_TABLE,
16
+ columns: SystemTables.stateHeadMetaTable.sqliteDef.columns,
17
+ values: {
18
+ id: STATE_HEAD_ROW_ID,
19
+ seqNumGlobal: head.global,
20
+ seqNumClient: head.client,
21
+ seqNumRebaseGeneration: head.rebaseGeneration,
22
+ },
23
+ options: { orReplace: true },
24
+ });
25
+ return execSql(dbState, statement, bindValues);
26
+ },
27
+ get: Effect.suspend(() => {
28
+ const [statement, bindValues] = findManyRows({
29
+ tableName: SystemTables.STATE_HEAD_META_TABLE,
30
+ columns: SystemTables.stateHeadMetaTable.sqliteDef.columns,
31
+ where: { id: STATE_HEAD_ROW_ID },
32
+ limit: 1,
33
+ });
34
+ return selectSql(dbState, statement, bindValues).pipe(Effect.map(([row]) => row === undefined
35
+ ? EventSequenceNumber.Client.ROOT
36
+ : EventSequenceNumber.Client.Composite.make({
37
+ global: row.seqNumGlobal,
38
+ client: row.seqNumClient,
39
+ rebaseGeneration: row.seqNumRebaseGeneration,
40
+ })));
41
+ }),
42
+ });
43
+ };
44
+ export const layer = (options) => Layer.succeed(StateHead, make(options));
45
+ export const layerTest = Layer.succeed(StateHead, StateHead.of({
46
+ [TypeId]: TypeId,
47
+ set: () => Effect.void,
48
+ get: Effect.succeed(EventSequenceNumber.Client.ROOT),
49
+ }));
50
+ //# sourceMappingURL=StateHead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateHead.js","sourceRoot":"","sources":["../src/StateHead.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { ParseResult, WorkerError } from '@livestore/utils/effect';
1
+ import { Schema, WorkerError } from '@livestore/utils/effect';
2
2
  /**
3
3
  * Type guard that identifies infrastructure errors from the Effect Worker transport layer.
4
4
  *
5
5
  * @remarks
6
6
  *
7
- * These errors ({@link WorkerError.WorkerError}, {@link ParseResult.ParseError}) represent communication failures between
7
+ * These errors ({@link WorkerError.WorkerError}, {@link Schema.SchemaError}) represent communication failures between
8
8
  * threads/processes — not application-level failures.
9
9
  */
10
- export declare const isWorkerTransportError: (e: unknown) => e is WorkerError.WorkerError | ParseResult.ParseError;
10
+ export declare const isWorkerTransportError: (e: unknown) => e is WorkerError.WorkerError | Schema.SchemaError;
11
11
  //# sourceMappingURL=WorkerTransportError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerTransportError.d.ts","sourceRoot":"","sources":["../src/WorkerTransportError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,UAClC,CAAA"}
1
+ {"version":3,"file":"WorkerTransportError.d.ts","sourceRoot":"","sources":["../src/WorkerTransportError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,MAAO,OAAO,KAAG,CAAC,IAAI,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WACjC,CAAA"}
@@ -1,11 +1,11 @@
1
- import { ParseResult, WorkerError } from '@livestore/utils/effect';
1
+ import { Schema, WorkerError } from '@livestore/utils/effect';
2
2
  /**
3
3
  * Type guard that identifies infrastructure errors from the Effect Worker transport layer.
4
4
  *
5
5
  * @remarks
6
6
  *
7
- * These errors ({@link WorkerError.WorkerError}, {@link ParseResult.ParseError}) represent communication failures between
7
+ * These errors ({@link WorkerError.WorkerError}, {@link Schema.SchemaError}) represent communication failures between
8
8
  * threads/processes — not application-level failures.
9
9
  */
10
- export const isWorkerTransportError = (e) => ParseResult.isParseError(e) || WorkerError.isWorkerError(e);
10
+ export const isWorkerTransportError = (e) => Schema.isSchemaError(e) || WorkerError.isWorkerError(e);
11
11
  //# sourceMappingURL=WorkerTransportError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerTransportError.js","sourceRoot":"","sources":["../src/WorkerTransportError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAU,EAAyD,EAAE,CAC1G,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"WorkerTransportError.js","sourceRoot":"","sources":["../src/WorkerTransportError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAU,EAAqD,EAAE,CACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
- import { SessionIdSymbol } from '../adapter-types.ts';
2
1
  import { State } from '../schema/mod.ts';
2
+ import { SessionIdSymbol } from '../session-id-symbol.ts';
3
3
  export declare const UiState: State.SQLite.ClientDocumentTableDef<"UiState", {
4
4
  readonly showSidebar: boolean;
5
5
  }, {
@@ -15,10 +15,10 @@ export declare const UiState: State.SQLite.ClientDocumentTableDef<"UiState", {
15
15
  }>;
16
16
  export declare const appConfig: State.SQLite.ClientDocumentTableDef<"AppConfig", {
17
17
  readonly fontSize: number;
18
- readonly theme: "light" | "dark";
18
+ readonly theme: "dark" | "light";
19
19
  }, {
20
20
  readonly fontSize: number;
21
- readonly theme: "light" | "dark";
21
+ readonly theme: "dark" | "light";
22
22
  }, {
23
23
  partialSet: true;
24
24
  default: {
@@ -31,10 +31,10 @@ export declare const appConfig: State.SQLite.ClientDocumentTableDef<"AppConfig",
31
31
  }>;
32
32
  export declare const appConfig2: State.SQLite.ClientDocumentTableDef<"AppConfig", {
33
33
  readonly fontSize: number;
34
- readonly theme: "light" | "dark";
34
+ readonly theme: "dark" | "light";
35
35
  }, {
36
36
  readonly fontSize: number;
37
- readonly theme: "light" | "dark";
37
+ readonly theme: "dark" | "light";
38
38
  }, {
39
39
  partialSet: true;
40
40
  default: {
@@ -61,10 +61,10 @@ export declare const tables: {
61
61
  }>;
62
62
  appConfig: State.SQLite.ClientDocumentTableDef<"AppConfig", {
63
63
  readonly fontSize: number;
64
- readonly theme: "light" | "dark";
64
+ readonly theme: "dark" | "light";
65
65
  }, {
66
66
  readonly fontSize: number;
67
- readonly theme: "light" | "dark";
67
+ readonly theme: "dark" | "light";
68
68
  }, {
69
69
  partialSet: true;
70
70
  default: {
@@ -92,7 +92,7 @@ export declare const schema: import("../schema/schema.ts").FromInputSchema.Deriv
92
92
  }>;
93
93
  appConfigSet: State.SQLite.ClientDocumentTableDef.SetEventDefLike<"AppConfig", {
94
94
  readonly fontSize: number;
95
- readonly theme: "light" | "dark";
95
+ readonly theme: "dark" | "light";
96
96
  }, {
97
97
  partialSet: true;
98
98
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/__tests__/fixture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAc,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEpD,eAAO,MAAM,OAAO;;;;;;;;;;;;EAQlB,CAAA;AAOF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;EAOpB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAOrB,CAAA;AAOF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAA;AAI5C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAA"}
1
+ {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/__tests__/fixture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,eAAO,MAAM,OAAO;;;;;;;;;;;;EAQlB,CAAA;AAOF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;EAOpB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAOrB,CAAA;AAOF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAA;AAI5C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Schema } from '@livestore/utils/effect';
2
- import { SessionIdSymbol } from "../adapter-types.js";
3
- import { makeSchema, State } from "../schema/mod.js";
2
+ import { makeSchema, State } from '../schema/mod.js';
3
+ import { SessionIdSymbol } from '../session-id-symbol.js';
4
4
  export const UiState = State.SQLite.clientDocument({
5
5
  name: 'UiState',
6
6
  schema: Schema.Struct({
@@ -11,8 +11,8 @@ export const UiState = State.SQLite.clientDocument({
11
11
  },
12
12
  });
13
13
  const Config = Schema.Struct({
14
- fontSize: Schema.Number,
15
- theme: Schema.Literal('light', 'dark'),
14
+ fontSize: Schema.Finite,
15
+ theme: Schema.Literals(['light', 'dark']),
16
16
  });
17
17
  export const appConfig = State.SQLite.clientDocument({
18
18
  name: 'AppConfig',
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../src/__tests__/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACjD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC,OAAO;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC7B;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;CACvC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACnD,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;QACP,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACxC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACpD,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;QACP,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACxC;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,OAAO,CAAC,GAAG;IACvB,YAAY,EAAE,SAAS,CAAC,GAAG;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAE5C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../src/__tests__/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACjD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC,OAAO;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC7B;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACnD,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;QACP,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACxC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACpD,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;QACP,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACxC;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,OAAO,CAAC,GAAG;IACvB,YAAY,EAAE,SAAS,CAAC,GAAG;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAE5C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { type Effect, type Exit, type Queue, Schema, type Scope, type SubscriptionRef, type WebChannel } from '@livestore/utils/effect';
1
+ import { type Effect, type Exit, type Queue, type Latch, Schema, type Scope, type SubscriptionRef, type WebChannel } from '@livestore/utils/effect';
2
2
  import type { ClientSessionLeaderThreadProxy } from './ClientSessionLeaderThreadProxy.ts';
3
3
  import type * as Devtools from './devtools/mod.ts';
4
4
  import type { IntentionalShutdownCause, MaterializeError, UnknownError } from './errors.ts';
@@ -21,8 +21,8 @@ export interface ClientSession {
21
21
  enabled: false;
22
22
  } | {
23
23
  enabled: true;
24
- pullLatch: Effect.Latch;
25
- pushLatch: Effect.Latch;
24
+ pullLatch: Latch.Latch;
25
+ pushLatch: Latch.Latch;
26
26
  };
27
27
  clientId: string;
28
28
  sessionId: string;
@@ -36,8 +36,8 @@ export interface ClientSession {
36
36
  }
37
37
  export type ResetMode = 'all-data' | 'only-app-db';
38
38
  export declare const BootStateProgress: Schema.Struct<{
39
- done: typeof Schema.Number;
40
- total: typeof Schema.Number;
39
+ readonly done: Schema.Finite;
40
+ readonly total: Schema.Finite;
41
41
  }>;
42
42
  /**
43
43
  * Describes known reasons why LiveStore boot may encounter storage issues.
@@ -47,7 +47,7 @@ export declare const BootStateProgress: Schema.Struct<{
47
47
  * - `storage-unavailable`: OPFS access denied for other reasons (permissions, quota)
48
48
  * - `unknown`: Unexpected error during storage initialization
49
49
  */
50
- export declare const BootWarningReason: Schema.Literal<["private-browsing", "storage-unavailable", "unknown"]>;
50
+ export declare const BootWarningReason: Schema.Literals<readonly ["private-browsing", "storage-unavailable", "unknown"]>;
51
51
  export type BootWarningReason = typeof BootWarningReason.Type;
52
52
  /**
53
53
  * Describes the storage mode the store is operating in.
@@ -56,77 +56,49 @@ export type BootWarningReason = typeof BootWarningReason.Type;
56
56
  * - `persisted`: Data is persisted to disk (e.g., via OPFS)
57
57
  * - `in-memory`: Data is only stored in memory and will be lost on page refresh
58
58
  */
59
- export declare const StorageMode: Schema.Literal<["persisted", "in-memory"]>;
59
+ export declare const StorageMode: Schema.Literals<readonly ["persisted", "in-memory"]>;
60
60
  export type StorageMode = typeof StorageMode.Type;
61
- export declare const BootStatus: Schema.Union<[Schema.Struct<{
62
- stage: Schema.Literal<["loading"]>;
61
+ export declare const BootStatus: Schema.Union<readonly [Schema.Struct<{
62
+ readonly stage: Schema.Literal<"loading">;
63
63
  }>, Schema.Struct<{
64
- stage: Schema.Literal<["migrating"]>;
65
- progress: Schema.Struct<{
66
- done: typeof Schema.Number;
67
- total: typeof Schema.Number;
64
+ readonly stage: Schema.Literal<"migrating">;
65
+ readonly progress: Schema.Struct<{
66
+ readonly done: Schema.Finite;
67
+ readonly total: Schema.Finite;
68
68
  }>;
69
69
  }>, Schema.Struct<{
70
- stage: Schema.Literal<["rehydrating"]>;
71
- progress: Schema.Struct<{
72
- done: typeof Schema.Number;
73
- total: typeof Schema.Number;
70
+ readonly stage: Schema.Literal<"rehydrating">;
71
+ readonly progress: Schema.Struct<{
72
+ readonly done: Schema.Finite;
73
+ readonly total: Schema.Finite;
74
74
  }>;
75
75
  }>, Schema.Struct<{
76
- stage: Schema.Literal<["syncing"]>;
77
- progress: Schema.Struct<{
78
- done: typeof Schema.Number;
79
- total: typeof Schema.Number;
76
+ readonly stage: Schema.Literal<"syncing">;
77
+ readonly progress: Schema.Struct<{
78
+ readonly done: Schema.Finite;
79
+ readonly total: Schema.Finite;
80
80
  }>;
81
81
  }>, Schema.Struct<{
82
- stage: Schema.Literal<["done"]>;
82
+ readonly stage: Schema.Literal<"done">;
83
83
  }>, Schema.Struct<{
84
- stage: Schema.Literal<["warning"]>;
85
- reason: Schema.Literal<["private-browsing", "storage-unavailable", "unknown"]>;
86
- message: typeof Schema.String;
84
+ readonly stage: Schema.Literal<"warning">;
85
+ readonly reason: Schema.Literals<readonly ["private-browsing", "storage-unavailable", "unknown"]>;
86
+ readonly message: Schema.String;
87
87
  }>]>;
88
88
  export type BootStatus = typeof BootStatus.Type;
89
- /**
90
- * Can be used in queries to refer to the current session id.
91
- * Will be replaced with the actual session id at runtime
92
- *
93
- * In client document table:
94
- * ```ts
95
- * const uiState = State.SQLite.clientDocument({
96
- * name: 'ui_state',
97
- * schema: Schema.Struct({
98
- * theme: Schema.Literal('dark', 'light', 'system'),
99
- * user: Schema.String,
100
- * showToolbar: Schema.Boolean,
101
- * }),
102
- * default: { value: defaultFrontendState, id: SessionIdSymbol },
103
- * })
104
- * ```
105
- *
106
- * Or in a client document query:
107
- * ```ts
108
- * const query$ = queryDb(tables.uiState.get(SessionIdSymbol))
109
- * ```
110
- */
111
- export declare const SessionIdSymbol: unique symbol;
112
- export type SessionIdSymbol = typeof SessionIdSymbol;
113
89
  export type LockStatus = 'has-lock' | 'no-lock';
114
90
  export type MigrationOptions = {
115
- strategy: 'auto';
116
91
  hooks?: Partial<MigrationHooks>;
117
92
  logging?: {
118
93
  excludeAffectedRows?: (sqlStmt: string) => boolean;
119
94
  };
120
- } | {
121
- strategy: 'manual';
122
- migrate: (oldDb: Uint8Array<ArrayBuffer>) => Uint8Array<ArrayBuffer> | Promise<Uint8Array<ArrayBuffer>> | Effect.Effect<Uint8Array<ArrayBuffer>, unknown>;
123
95
  };
124
96
  export type MigrationHooks = {
125
97
  /** Runs on the empty in-memory database with no database schemas applied yet */
126
98
  init: MigrationHook;
127
- /** Runs before applying the migration strategy but after table schemas have been applied and singleton rows have been created */
99
+ /** Runs after table schemas and singleton rows are created, but before rematerializing state from the eventlog */
128
100
  pre: MigrationHook;
129
- /** Runs after applying the migration strategy before creating export snapshot and closing the database */
101
+ /** Runs after rematerializing state from the eventlog */
130
102
  post: MigrationHook;
131
103
  };
132
104
  export type MigrationHook = (db: SqliteDb) => void | Promise<void> | Effect.Effect<void, unknown>;
@@ -137,6 +109,10 @@ export type Adapter = (args: AdapterArgs) => Effect.Effect<ClientSession, Unknow
137
109
  export interface AdapterArgs {
138
110
  schema: LiveStoreSchema;
139
111
  storeId: string;
112
+ /** Runtime parameters resolved by `createStore` before the adapter is invoked. */
113
+ params: {
114
+ stateRebuildBatchSize: number;
115
+ };
140
116
  devtoolsEnabled: boolean;
141
117
  debugInstanceId: string;
142
118
  bootStatusQueue: Queue.Queue<BootStatus>;
@@ -147,8 +123,8 @@ export interface AdapterArgs {
147
123
  *
148
124
  * @default undefined
149
125
  */
150
- syncPayloadSchema: Schema.Schema<any> | undefined;
126
+ syncPayloadSchema: Schema.Decoder<Schema.Json> | undefined;
151
127
  /** Encoded representation of the sync payload matching `syncPayloadSchema`. */
152
- syncPayloadEncoded: Schema.JsonValue | undefined;
128
+ syncPayloadEncoded: Schema.Json | undefined;
153
129
  }
154
130
  //# sourceMappingURL=adapter-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-types.d.ts","sourceRoot":"","sources":["../src/adapter-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-types.d.ts","sourceRoot":"","sources":["../src/adapter-types.ts"],"names":[],"mappings":"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"}