@livestore/common 0.4.0 → 0.5.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) 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 +1 -1
  17. package/dist/__tests__/fixture.d.ts.map +1 -1
  18. package/dist/__tests__/fixture.js +3 -3
  19. package/dist/__tests__/fixture.js.map +1 -1
  20. package/dist/adapter-types.d.ts +29 -57
  21. package/dist/adapter-types.d.ts.map +1 -1
  22. package/dist/adapter-types.js +20 -37
  23. package/dist/adapter-types.js.map +1 -1
  24. package/dist/debug-info.d.ts +56 -56
  25. package/dist/debug-info.d.ts.map +1 -1
  26. package/dist/debug-info.js +28 -41
  27. package/dist/debug-info.js.map +1 -1
  28. package/dist/defs.d.ts +9 -9
  29. package/dist/defs.js +2 -2
  30. package/dist/devtools/devtools-compatibility.test.js +1 -0
  31. package/dist/devtools/devtools-compatibility.test.js.map +1 -1
  32. package/dist/devtools/devtools-messages-client-session.d.ts +520 -332
  33. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  34. package/dist/devtools/devtools-messages-client-session.js +76 -74
  35. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  36. package/dist/devtools/devtools-messages-common.d.ts +27 -27
  37. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  38. package/dist/devtools/devtools-messages-common.js +5 -5
  39. package/dist/devtools/devtools-messages-common.js.map +1 -1
  40. package/dist/devtools/devtools-messages-leader.d.ts +405 -343
  41. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  42. package/dist/devtools/devtools-messages-leader.js +101 -89
  43. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  44. package/dist/devtools/devtools-sessioninfo.d.ts +18 -19
  45. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  46. package/dist/devtools/devtools-sessioninfo.js +8 -5
  47. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  48. package/dist/devtools/mod.d.ts +4 -5
  49. package/dist/devtools/mod.d.ts.map +1 -1
  50. package/dist/devtools/mod.js +9 -5
  51. package/dist/devtools/mod.js.map +1 -1
  52. package/dist/errors.d.ts +45 -69
  53. package/dist/errors.d.ts.map +1 -1
  54. package/dist/errors.js +18 -16
  55. package/dist/errors.js.map +1 -1
  56. package/dist/index.d.ts +4 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +4 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/leader-thread/LeaderSyncProcessor.d.ts +66 -18
  61. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  62. package/dist/leader-thread/LeaderSyncProcessor.js +519 -461
  63. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  64. package/dist/leader-thread/RejectedPushError.d.ts +67 -36
  65. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -1
  66. package/dist/leader-thread/RejectedPushError.js +24 -5
  67. package/dist/leader-thread/RejectedPushError.js.map +1 -1
  68. package/dist/leader-thread/connection.d.ts +1 -0
  69. package/dist/leader-thread/connection.d.ts.map +1 -1
  70. package/dist/leader-thread/connection.js +9 -8
  71. package/dist/leader-thread/connection.js.map +1 -1
  72. package/dist/leader-thread/eventlog.d.ts +4 -4
  73. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  74. package/dist/leader-thread/eventlog.js +6 -6
  75. package/dist/leader-thread/eventlog.js.map +1 -1
  76. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  77. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  78. package/dist/leader-thread/leader-worker-devtools.js +33 -17
  79. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  80. package/dist/leader-thread/make-leader-thread-layer.d.ts +9 -5
  81. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  82. package/dist/leader-thread/make-leader-thread-layer.js +25 -35
  83. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  84. package/dist/leader-thread/make-leader-thread-layer.test.js +7 -7
  85. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -1
  86. package/dist/leader-thread/materialize-event.d.ts +2 -1
  87. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  88. package/dist/leader-thread/materialize-event.js +4 -0
  89. package/dist/leader-thread/materialize-event.js.map +1 -1
  90. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  91. package/dist/leader-thread/recreate-db.js +18 -39
  92. package/dist/leader-thread/recreate-db.js.map +1 -1
  93. package/dist/leader-thread/shutdown-channel.d.ts +2 -6
  94. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  95. package/dist/leader-thread/shutdown-channel.js +2 -3
  96. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  97. package/dist/leader-thread/stream-events.d.ts +4 -7
  98. package/dist/leader-thread/stream-events.d.ts.map +1 -1
  99. package/dist/leader-thread/stream-events.js +13 -16
  100. package/dist/leader-thread/stream-events.js.map +1 -1
  101. package/dist/leader-thread/types.d.ts +32 -69
  102. package/dist/leader-thread/types.d.ts.map +1 -1
  103. package/dist/leader-thread/types.js +5 -5
  104. package/dist/leader-thread/types.js.map +1 -1
  105. package/dist/logging.d.ts +5 -30
  106. package/dist/logging.d.ts.map +1 -1
  107. package/dist/logging.js +1 -32
  108. package/dist/logging.js.map +1 -1
  109. package/dist/make-client-session.d.ts +1 -2
  110. package/dist/make-client-session.d.ts.map +1 -1
  111. package/dist/make-client-session.js +3 -3
  112. package/dist/make-client-session.js.map +1 -1
  113. package/dist/materializer-helper.d.ts +0 -1
  114. package/dist/materializer-helper.d.ts.map +1 -1
  115. package/dist/materializer-helper.js +7 -35
  116. package/dist/materializer-helper.js.map +1 -1
  117. package/dist/otel.d.ts +2 -3
  118. package/dist/otel.d.ts.map +1 -1
  119. package/dist/otel.js +2 -7
  120. package/dist/otel.js.map +1 -1
  121. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  122. package/dist/rematerialize-from-eventlog.js +28 -26
  123. package/dist/rematerialize-from-eventlog.js.map +1 -1
  124. package/dist/schema/EventDef/define.d.ts +4 -4
  125. package/dist/schema/EventDef/define.d.ts.map +1 -1
  126. package/dist/schema/EventDef/define.js +5 -5
  127. package/dist/schema/EventDef/define.js.map +1 -1
  128. package/dist/schema/EventDef/define.test.d.ts +2 -0
  129. package/dist/schema/EventDef/define.test.d.ts.map +1 -0
  130. package/dist/schema/EventDef/define.test.js +23 -0
  131. package/dist/schema/EventDef/define.test.js.map +1 -0
  132. package/dist/schema/EventDef/deprecated.d.ts +8 -13
  133. package/dist/schema/EventDef/deprecated.d.ts.map +1 -1
  134. package/dist/schema/EventDef/deprecated.js +12 -13
  135. package/dist/schema/EventDef/deprecated.js.map +1 -1
  136. package/dist/schema/EventDef/deprecated.test.js +1 -1
  137. package/dist/schema/EventDef/deprecated.test.js.map +1 -1
  138. package/dist/schema/EventDef/event-def.d.ts +1 -1
  139. package/dist/schema/EventDef/event-def.d.ts.map +1 -1
  140. package/dist/schema/EventSequenceNumber/client.d.ts +12 -12
  141. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -1
  142. package/dist/schema/EventSequenceNumber/client.js +8 -9
  143. package/dist/schema/EventSequenceNumber/client.js.map +1 -1
  144. package/dist/schema/EventSequenceNumber/global.d.ts +2 -2
  145. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -1
  146. package/dist/schema/EventSequenceNumber/global.js +1 -1
  147. package/dist/schema/EventSequenceNumber/global.js.map +1 -1
  148. package/dist/schema/EventSequenceNumber.test.js +5 -5
  149. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  150. package/dist/schema/LiveStoreEvent/client.d.ts +50 -179
  151. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -1
  152. package/dist/schema/LiveStoreEvent/client.js +32 -29
  153. package/dist/schema/LiveStoreEvent/client.js.map +1 -1
  154. package/dist/schema/LiveStoreEvent/client.test.js +11 -2
  155. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -1
  156. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +7 -7
  157. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -1
  158. package/dist/schema/LiveStoreEvent/global.d.ts +6 -6
  159. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -1
  160. package/dist/schema/LiveStoreEvent/global.js +1 -1
  161. package/dist/schema/LiveStoreEvent/global.js.map +1 -1
  162. package/dist/schema/LiveStoreEvent/input.d.ts +5 -5
  163. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -1
  164. package/dist/schema/LiveStoreEvent/input.js +3 -3
  165. package/dist/schema/LiveStoreEvent/input.js.map +1 -1
  166. package/dist/schema/mod.d.ts +1 -0
  167. package/dist/schema/mod.d.ts.map +1 -1
  168. package/dist/schema/mod.js +1 -0
  169. package/dist/schema/mod.js.map +1 -1
  170. package/dist/schema/schema.d.ts.map +1 -1
  171. package/dist/schema/schema.js +3 -2
  172. package/dist/schema/schema.js.map +1 -1
  173. package/dist/schema/state/sqlite/client-document-def.d.ts +12 -17
  174. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  175. package/dist/schema/state/sqlite/client-document-def.js +23 -20
  176. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  177. package/dist/schema/state/sqlite/client-document-def.test.js +29 -8
  178. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  179. package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
  180. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  181. package/dist/schema/state/sqlite/column-annotations.js +13 -15
  182. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  183. package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
  184. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  185. package/dist/schema/state/sqlite/column-def.d.ts +1 -1
  186. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  187. package/dist/schema/state/sqlite/column-def.js +57 -31
  188. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  189. package/dist/schema/state/sqlite/column-def.test.js +118 -72
  190. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  191. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  192. package/dist/schema/state/sqlite/column-spec.test.js +2 -2
  193. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
  194. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  195. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +13 -4
  196. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  197. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +9 -9
  198. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  199. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +8 -13
  200. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  201. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +27 -16
  202. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  203. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +13 -11
  204. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  205. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +5 -3
  206. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  207. package/dist/schema/state/sqlite/mod.d.ts +1 -3
  208. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  209. package/dist/schema/state/sqlite/mod.js +1 -1
  210. package/dist/schema/state/sqlite/mod.js.map +1 -1
  211. package/dist/schema/state/sqlite/persistence.d.ts +11 -0
  212. package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
  213. package/dist/schema/state/sqlite/persistence.js +10 -0
  214. package/dist/schema/state/sqlite/persistence.js.map +1 -0
  215. package/dist/schema/state/sqlite/query-builder/api.d.ts +7 -7
  216. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  217. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  218. package/dist/schema/state/sqlite/query-builder/astToSql.js +27 -23
  219. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  220. package/dist/schema/state/sqlite/query-builder/impl.d.ts +3 -1
  221. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  222. package/dist/schema/state/sqlite/query-builder/impl.js +16 -14
  223. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  224. package/dist/schema/state/sqlite/query-builder/impl.test.js +362 -596
  225. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  226. package/dist/schema/state/sqlite/schema-helpers.js +1 -1
  227. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  228. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +102 -134
  229. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -1
  230. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +2 -2
  231. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -1
  232. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +328 -106
  233. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -1
  234. package/dist/schema/state/sqlite/system-tables/state-tables.js +33 -1
  235. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -1
  236. package/dist/schema/state/sqlite/table-def.d.ts +16 -19
  237. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  238. package/dist/schema/state/sqlite/table-def.js +53 -3
  239. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  240. package/dist/schema/state/sqlite/table-def.test.js +153 -36
  241. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  242. package/dist/schema/unknown-events.d.ts.map +1 -1
  243. package/dist/schema/unknown-events.js +2 -1
  244. package/dist/schema/unknown-events.js.map +1 -1
  245. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +2 -2
  246. package/dist/session-id-symbol.d.ts +29 -0
  247. package/dist/session-id-symbol.d.ts.map +1 -0
  248. package/dist/session-id-symbol.js +44 -0
  249. package/dist/session-id-symbol.js.map +1 -0
  250. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  251. package/dist/sql-queries/sql-queries.js +8 -10
  252. package/dist/sql-queries/sql-queries.js.map +1 -1
  253. package/dist/sql-queries/types.d.ts +6 -7
  254. package/dist/sql-queries/types.d.ts.map +1 -1
  255. package/dist/sql-queries/types.js.map +1 -1
  256. package/dist/sqlite-db-helper.d.ts +21 -1
  257. package/dist/sqlite-db-helper.d.ts.map +1 -1
  258. package/dist/sqlite-db-helper.js +37 -2
  259. package/dist/sqlite-db-helper.js.map +1 -1
  260. package/dist/sqlite-types.d.ts +3 -6
  261. package/dist/sqlite-types.d.ts.map +1 -1
  262. package/dist/sqlite-types.js +3 -3
  263. package/dist/sqlite-types.js.map +1 -1
  264. package/dist/sync/ClientSessionSyncProcessor.d.ts +38 -16
  265. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  266. package/dist/sync/ClientSessionSyncProcessor.js +196 -66
  267. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  268. package/dist/sync/errors.d.ts +12 -18
  269. package/dist/sync/errors.d.ts.map +1 -1
  270. package/dist/sync/errors.js +2 -2
  271. package/dist/sync/errors.js.map +1 -1
  272. package/dist/sync/mock-sync-backend.d.ts +2 -3
  273. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  274. package/dist/sync/mock-sync-backend.js +54 -33
  275. package/dist/sync/mock-sync-backend.js.map +1 -1
  276. package/dist/sync/mock-sync-backend.test.d.ts +2 -0
  277. package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
  278. package/dist/sync/mock-sync-backend.test.js +49 -0
  279. package/dist/sync/mock-sync-backend.test.js.map +1 -0
  280. package/dist/sync/next/history-dag-common.d.ts +4 -0
  281. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  282. package/dist/sync/next/history-dag-common.js +52 -31
  283. package/dist/sync/next/history-dag-common.js.map +1 -1
  284. package/dist/sync/next/history-dag.d.ts.map +1 -1
  285. package/dist/sync/next/history-dag.js +2 -1
  286. package/dist/sync/next/history-dag.js.map +1 -1
  287. package/dist/sync/next/test/compact-events.calculator.test.js +2 -2
  288. package/dist/sync/next/test/event-fixtures.d.ts +7 -7
  289. package/dist/sync/next/test/event-fixtures.js +1 -1
  290. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  291. package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
  292. package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
  293. package/dist/sync/next/test/history-dag-common.test.js +73 -0
  294. package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
  295. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  296. package/dist/sync/sync-backend-kv.js +4 -2
  297. package/dist/sync/sync-backend-kv.js.map +1 -1
  298. package/dist/sync/sync-backend.d.ts +15 -15
  299. package/dist/sync/sync-backend.d.ts.map +1 -1
  300. package/dist/sync/sync-backend.js +9 -5
  301. package/dist/sync/sync-backend.js.map +1 -1
  302. package/dist/sync/sync.d.ts +1 -1
  303. package/dist/sync/sync.d.ts.map +1 -1
  304. package/dist/sync/syncstate.d.ts +97 -173
  305. package/dist/sync/syncstate.d.ts.map +1 -1
  306. package/dist/sync/syncstate.js +34 -37
  307. package/dist/sync/syncstate.js.map +1 -1
  308. package/dist/sync/syncstate.test.js +100 -61
  309. package/dist/sync/syncstate.test.js.map +1 -1
  310. package/dist/sync/transport-chunking.d.ts +15 -16
  311. package/dist/sync/transport-chunking.d.ts.map +1 -1
  312. package/dist/sync/transport-chunking.js +23 -32
  313. package/dist/sync/transport-chunking.js.map +1 -1
  314. package/dist/util.d.ts +11 -4
  315. package/dist/util.d.ts.map +1 -1
  316. package/dist/util.js +19 -2
  317. package/dist/util.js.map +1 -1
  318. package/dist/version.d.ts.map +1 -1
  319. package/dist/version.js.map +1 -1
  320. package/package.json +19 -37
  321. package/src/ClientSessionLeaderThreadProxy.ts +1 -1
  322. package/src/MaterializationJournal.ts +184 -0
  323. package/src/StateHead.ts +80 -0
  324. package/src/WorkerTransportError.ts +4 -4
  325. package/src/__tests__/fixture.ts +3 -3
  326. package/src/adapter-types.ts +24 -61
  327. package/src/debug-info.ts +50 -70
  328. package/src/defs.ts +2 -2
  329. package/src/devtools/devtools-compatibility.test.ts +1 -0
  330. package/src/devtools/devtools-messages-client-session.ts +56 -65
  331. package/src/devtools/devtools-messages-common.ts +12 -11
  332. package/src/devtools/devtools-messages-leader.ts +71 -69
  333. package/src/devtools/devtools-sessioninfo.ts +13 -11
  334. package/src/devtools/mod.ts +4 -5
  335. package/src/errors.ts +46 -34
  336. package/src/index.ts +8 -1
  337. package/src/leader-thread/LeaderSyncProcessor.ts +794 -691
  338. package/src/leader-thread/RejectedPushError.ts +40 -27
  339. package/src/leader-thread/connection.ts +12 -8
  340. package/src/leader-thread/eventlog.ts +7 -7
  341. package/src/leader-thread/leader-worker-devtools.ts +37 -19
  342. package/src/leader-thread/make-leader-thread-layer.test.ts +7 -7
  343. package/src/leader-thread/make-leader-thread-layer.ts +56 -53
  344. package/src/leader-thread/materialize-event.ts +13 -8
  345. package/src/leader-thread/recreate-db.ts +24 -59
  346. package/src/leader-thread/shutdown-channel.ts +3 -14
  347. package/src/leader-thread/stream-events.ts +104 -101
  348. package/src/leader-thread/types.ts +24 -62
  349. package/src/logging.ts +5 -52
  350. package/src/make-client-session.ts +6 -6
  351. package/src/materializer-helper.ts +8 -37
  352. package/src/otel.ts +5 -14
  353. package/src/rematerialize-from-eventlog.ts +97 -94
  354. package/src/schema/EventDef/define.test.ts +28 -0
  355. package/src/schema/EventDef/define.ts +20 -19
  356. package/src/schema/EventDef/deprecated.test.ts +1 -8
  357. package/src/schema/EventDef/deprecated.ts +17 -20
  358. package/src/schema/EventDef/event-def.ts +2 -4
  359. package/src/schema/EventSequenceNumber/client.ts +8 -9
  360. package/src/schema/EventSequenceNumber/global.ts +1 -1
  361. package/src/schema/EventSequenceNumber.test.ts +5 -5
  362. package/src/schema/LiveStoreEvent/client.test.ts +17 -4
  363. package/src/schema/LiveStoreEvent/client.ts +36 -35
  364. package/src/schema/LiveStoreEvent/for-event-def.ts +7 -7
  365. package/src/schema/LiveStoreEvent/global.ts +1 -1
  366. package/src/schema/LiveStoreEvent/input.ts +6 -6
  367. package/src/schema/mod.ts +1 -0
  368. package/src/schema/schema.ts +3 -2
  369. package/src/schema/state/sqlite/client-document-def.test.ts +32 -13
  370. package/src/schema/state/sqlite/client-document-def.ts +95 -80
  371. package/src/schema/state/sqlite/column-annotations.test.ts +26 -45
  372. package/src/schema/state/sqlite/column-annotations.ts +26 -30
  373. package/src/schema/state/sqlite/column-def.test.ts +132 -77
  374. package/src/schema/state/sqlite/column-def.ts +72 -37
  375. package/src/schema/state/sqlite/column-spec.test.ts +2 -2
  376. package/src/schema/state/sqlite/column-spec.ts +3 -2
  377. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +15 -5
  378. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
  379. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -16
  380. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +25 -31
  381. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +35 -21
  382. package/src/schema/state/sqlite/mod.ts +2 -4
  383. package/src/schema/state/sqlite/persistence.ts +11 -0
  384. package/src/schema/state/sqlite/query-builder/api.ts +9 -9
  385. package/src/schema/state/sqlite/query-builder/astToSql.ts +31 -26
  386. package/src/schema/state/sqlite/query-builder/impl.test.ts +433 -669
  387. package/src/schema/state/sqlite/query-builder/impl.ts +19 -15
  388. package/src/schema/state/sqlite/schema-helpers.ts +1 -1
  389. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +2 -2
  390. package/src/schema/state/sqlite/system-tables/state-tables.ts +41 -1
  391. package/src/schema/state/sqlite/table-def.test.ts +204 -66
  392. package/src/schema/state/sqlite/table-def.ts +96 -45
  393. package/src/schema/unknown-events.ts +3 -2
  394. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +2 -2
  395. package/src/session-id-symbol.ts +59 -0
  396. package/src/sql-queries/sql-queries.ts +8 -12
  397. package/src/sql-queries/types.ts +6 -7
  398. package/src/sqlite-db-helper.ts +64 -2
  399. package/src/sqlite-types.ts +5 -8
  400. package/src/sync/ClientSessionSyncProcessor.ts +303 -119
  401. package/src/sync/errors.ts +14 -12
  402. package/src/sync/mock-sync-backend.test.ts +78 -0
  403. package/src/sync/mock-sync-backend.ts +93 -47
  404. package/src/sync/next/history-dag-common.ts +60 -34
  405. package/src/sync/next/history-dag.ts +4 -1
  406. package/src/sync/next/test/compact-events.calculator.test.ts +2 -2
  407. package/src/sync/next/test/event-fixtures.ts +1 -1
  408. package/src/sync/next/test/history-dag-common.test.ts +87 -0
  409. package/src/sync/sync-backend-kv.ts +4 -2
  410. package/src/sync/sync-backend.ts +15 -15
  411. package/src/sync/sync.ts +1 -1
  412. package/src/sync/syncstate.test.ts +191 -140
  413. package/src/sync/syncstate.ts +63 -53
  414. package/src/sync/transport-chunking.ts +34 -39
  415. package/src/util.ts +18 -9
  416. package/src/version.ts +1 -2
  417. package/dist/sql-queries/misc.d.ts +0 -2
  418. package/dist/sql-queries/misc.d.ts.map +0 -1
  419. package/dist/sql-queries/misc.js +0 -2
  420. package/dist/sql-queries/misc.js.map +0 -1
  421. package/src/sql-queries/misc.ts +0 -2
@@ -5,130 +5,132 @@ import { EventSequenceNumber } from '../schema/mod.ts'
5
5
  import * as SyncState from '../sync/syncstate.ts'
6
6
  import { LeaderReqResMessage, LSDMessage, LSDReqResMessage, NetworkStatus } from './devtools-messages-common.ts'
7
7
 
8
- export class ResetAllDataReq extends LSDReqResMessage('LSD.Leader.ResetAllDataReq', {
9
- mode: Schema.Literal('all-data', 'only-app-db'),
10
- }) {}
8
+ export const ResetAllDataReq = LSDReqResMessage('LSD.Leader.ResetAllDataReq', {
9
+ mode: Schema.Literals(['all-data', 'only-app-db']),
10
+ })
11
11
 
12
- export class DatabaseFileInfoReq extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoReq', {}) {}
12
+ export const DatabaseFileInfoReq = LSDReqResMessage('LSD.Leader.DatabaseFileInfoReq', {})
13
13
 
14
- export class DatabaseFileInfo extends Schema.Struct({
15
- fileSize: Schema.Number,
16
- persistenceInfo: Schema.Struct({ fileName: Schema.String }, { key: Schema.String, value: Schema.Any }),
17
- }) {}
14
+ export const DatabaseFileInfo = Schema.Struct({
15
+ fileSize: Schema.Finite,
16
+ persistenceInfo: Schema.StructWithRest(Schema.Struct({ fileName: Schema.String }), [
17
+ Schema.Record(Schema.String, Schema.Any),
18
+ ]),
19
+ })
18
20
 
19
- export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
21
+ export const DatabaseFileInfoRes = LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
20
22
  state: DatabaseFileInfo,
21
23
  eventlog: DatabaseFileInfo,
22
- }) {}
24
+ })
23
25
 
24
- export class NetworkStatusSubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusSubscribe', {
26
+ export const NetworkStatusSubscribe = LSDReqResMessage('LSD.Leader.NetworkStatusSubscribe', {
25
27
  subscriptionId: Schema.String,
26
- }) {}
27
- export class NetworkStatusUnsubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusUnsubscribe', {
28
+ })
29
+ export const NetworkStatusUnsubscribe = LSDReqResMessage('LSD.Leader.NetworkStatusUnsubscribe', {
28
30
  subscriptionId: Schema.String,
29
- }) {}
31
+ })
30
32
 
31
- export class NetworkStatusRes extends LSDReqResMessage('LSD.Leader.NetworkStatusRes', {
33
+ export const NetworkStatusRes = LSDReqResMessage('LSD.Leader.NetworkStatusRes', {
32
34
  networkStatus: NetworkStatus,
33
35
  subscriptionId: Schema.String,
34
- }) {}
36
+ })
35
37
 
36
- export class SyncingInfoReq extends LSDReqResMessage('LSD.Leader.SyncingInfoReq', {}) {}
38
+ export const SyncingInfoReq = LSDReqResMessage('LSD.Leader.SyncingInfoReq', {})
37
39
 
38
- export class SyncingInfo extends Schema.Struct({
40
+ export const SyncingInfo = Schema.Struct({
39
41
  enabled: Schema.Boolean,
40
- metadata: Schema.Record({ key: Schema.String, value: Schema.Any }),
41
- }) {}
42
+ metadata: Schema.Record(Schema.String, Schema.Any),
43
+ })
42
44
 
43
- export class SyncingInfoRes extends LSDReqResMessage('LSD.Leader.SyncingInfoRes', {
45
+ export const SyncingInfoRes = LSDReqResMessage('LSD.Leader.SyncingInfoRes', {
44
46
  syncingInfo: SyncingInfo,
45
- }) {}
47
+ })
46
48
 
47
- export class SyncHistorySubscribe extends LSDReqResMessage('LSD.Leader.SyncHistorySubscribe', {
49
+ export const SyncHistorySubscribe = LSDReqResMessage('LSD.Leader.SyncHistorySubscribe', {
48
50
  subscriptionId: Schema.String,
49
- }) {}
50
- export class SyncHistoryUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHistoryUnsubscribe', {
51
+ })
52
+ export const SyncHistoryUnsubscribe = LSDReqResMessage('LSD.Leader.SyncHistoryUnsubscribe', {
51
53
  subscriptionId: Schema.String,
52
- }) {}
53
- export class SyncHistoryRes extends LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
54
+ })
55
+ export const SyncHistoryRes = LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
54
56
  eventEncoded: LiveStoreEvent.Global.Encoded,
55
- metadata: Schema.Option(Schema.JsonValue),
57
+ metadata: Schema.Option(Schema.Json),
56
58
  subscriptionId: Schema.String,
57
- }) {}
59
+ })
58
60
 
59
- export class SyncHeadSubscribe extends LSDReqResMessage('LSD.Leader.SyncHeadSubscribe', {
61
+ export const SyncHeadSubscribe = LSDReqResMessage('LSD.Leader.SyncHeadSubscribe', {
60
62
  subscriptionId: Schema.String,
61
- }) {}
62
- export class SyncHeadUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHeadUnsubscribe', {
63
+ })
64
+ export const SyncHeadUnsubscribe = LSDReqResMessage('LSD.Leader.SyncHeadUnsubscribe', {
63
65
  subscriptionId: Schema.String,
64
- }) {}
65
- export class SyncHeadRes extends LSDReqResMessage('LSD.Leader.SyncHeadRes', {
66
+ })
67
+ export const SyncHeadRes = LSDReqResMessage('LSD.Leader.SyncHeadRes', {
66
68
  local: EventSequenceNumber.Client.Composite,
67
69
  upstream: EventSequenceNumber.Client.Composite,
68
70
  subscriptionId: Schema.String,
69
- }) {}
71
+ })
70
72
 
71
- export class SnapshotReq extends LSDReqResMessage('LSD.Leader.SnapshotReq', {}) {}
73
+ export const SnapshotReq = LSDReqResMessage('LSD.Leader.SnapshotReq', {})
72
74
 
73
- export class SnapshotRes extends LSDReqResMessage('LSD.Leader.SnapshotRes', {
74
- snapshot: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
75
- }) {}
75
+ export const SnapshotRes = LSDReqResMessage('LSD.Leader.SnapshotRes', {
76
+ snapshot: Transferable.Uint8Array as Schema.Codec<Uint8Array<ArrayBuffer>>,
77
+ })
76
78
 
77
79
  export const LoadDatabaseFile = LeaderReqResMessage('LSD.Leader.LoadDatabaseFile', {
78
80
  payload: {
79
- data: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
81
+ data: Transferable.Uint8Array as Schema.Codec<Uint8Array<ArrayBuffer>>,
80
82
  batchId: Schema.optional(Schema.String),
81
83
  },
82
84
  success: {},
83
85
  error: {
84
- cause: Schema.Union(
86
+ cause: Schema.Union([
85
87
  Schema.TaggedStruct('unsupported-file', {}),
86
88
  Schema.TaggedStruct('unsupported-database', {}),
87
- Schema.TaggedStruct('unknown-error', { cause: Schema.Defect }),
88
- ),
89
+ Schema.TaggedStruct('unknown-error', { cause: Schema.Defect() }),
90
+ ]),
89
91
  },
90
92
  })
91
93
 
92
94
  // TODO refactor this to use push/pull semantics
93
- export class SyncPull extends LSDMessage('LSD.Leader.SyncPull', {
95
+ export const SyncPull = LSDMessage('LSD.Leader.SyncPull', {
94
96
  payload: SyncState.PayloadUpstream,
95
- }) {}
97
+ })
96
98
 
97
99
  // TODO refactor this to use push/pull semantics
98
- export class CommitEventReq extends LSDReqResMessage('LSD.Leader.CommitEventReq', {
100
+ export const CommitEventReq = LSDReqResMessage('LSD.Leader.CommitEventReq', {
99
101
  eventEncoded: LiveStoreEvent.Input.Encoded,
100
- }) {}
102
+ })
101
103
 
102
- export class CommitEventRes extends LSDReqResMessage('LSD.Leader.CommitEventRes', {}) {}
104
+ export const CommitEventRes = LSDReqResMessage('LSD.Leader.CommitEventRes', {})
103
105
 
104
- export class EventlogReq extends LSDReqResMessage('LSD.Leader.EventlogReq', {}) {}
106
+ export const EventlogReq = LSDReqResMessage('LSD.Leader.EventlogReq', {})
105
107
 
106
- export class EventlogRes extends LSDReqResMessage('LSD.Leader.EventlogRes', {
107
- eventlog: Transferable.Uint8Array as Schema.Schema<Uint8Array<ArrayBuffer>>,
108
- }) {}
108
+ export const EventlogRes = LSDReqResMessage('LSD.Leader.EventlogRes', {
109
+ eventlog: Transferable.Uint8Array as Schema.Codec<Uint8Array<ArrayBuffer>>,
110
+ })
109
111
 
110
- export class Ping extends LSDReqResMessage('LSD.Leader.Ping', {
111
- devtoolsProtocolVersion: Schema.optional(Schema.Number),
112
- }) {}
112
+ export const Ping = LSDReqResMessage('LSD.Leader.Ping', {
113
+ devtoolsProtocolVersion: Schema.optional(Schema.Finite),
114
+ })
113
115
 
114
- export class Pong extends LSDReqResMessage('LSD.Leader.Pong', {
115
- devtoolsProtocolVersion: Schema.optional(Schema.Number),
116
- }) {}
116
+ export const Pong = LSDReqResMessage('LSD.Leader.Pong', {
117
+ devtoolsProtocolVersion: Schema.optional(Schema.Finite),
118
+ })
117
119
 
118
120
  /**
119
121
  * Sent by the app when the DevTools protocol isn't compatible.
120
122
  * Contains package versions for display and protocol versions for the actual compatibility decision.
121
123
  */
122
- export class VersionMismatch extends LSDReqResMessage('LSD.Leader.VersionMismatch', {
124
+ export const VersionMismatch = LSDReqResMessage('LSD.Leader.VersionMismatch', {
123
125
  /** The version running in the app */
124
126
  appVersion: Schema.String,
125
127
  /** The version that was sent by DevTools (that caused the mismatch) */
126
128
  receivedVersion: Schema.String,
127
- appDevtoolsProtocolVersion: Schema.Number,
128
- receivedDevtoolsProtocolVersion: Schema.optional(Schema.Number),
129
- }) {}
129
+ appDevtoolsProtocolVersion: Schema.Finite,
130
+ receivedDevtoolsProtocolVersion: Schema.optional(Schema.Finite),
131
+ })
130
132
 
131
- export class Disconnect extends LSDReqResMessage('LSD.Leader.Disconnect', {}) {}
133
+ export const Disconnect = LSDReqResMessage('LSD.Leader.Disconnect', {})
132
134
 
133
135
  export const SetSyncLatch = LeaderReqResMessage('LSD.Leader.SetSyncLatch', {
134
136
  payload: {
@@ -139,7 +141,7 @@ export const SetSyncLatch = LeaderReqResMessage('LSD.Leader.SetSyncLatch', {
139
141
 
140
142
  export const ResetAllData = LeaderReqResMessage('LSD.Leader.ResetAllData', {
141
143
  payload: {
142
- mode: Schema.Literal('all-data', 'only-app-db'),
144
+ mode: Schema.Literals(['all-data', 'only-app-db']),
143
145
  },
144
146
  success: {},
145
147
  })
@@ -163,12 +165,12 @@ export const ResetAllData = LeaderReqResMessage('LSD.Leader.ResetAllData', {
163
165
  // failure: UnknownError,
164
166
  // }) {}
165
167
 
166
- // export const MessageToApp_ = Schema.Union(DatabaseFileInfo_, NetworkStatus_)
168
+ // export const MessageToApp_ = Schema.Union([DatabaseFileInfo_, NetworkStatus_])
167
169
 
168
170
  // export type MessageToApp_ = typeof MessageToApp_.Type
169
171
  //
170
172
 
171
- export const MessageToApp = Schema.Union(
173
+ export const MessageToApp = Schema.Union([
172
174
  SnapshotReq,
173
175
  LoadDatabaseFile.Request,
174
176
  EventlogReq,
@@ -185,11 +187,11 @@ export const MessageToApp = Schema.Union(
185
187
  SyncHeadSubscribe,
186
188
  SyncHeadUnsubscribe,
187
189
  SetSyncLatch.Request,
188
- ).annotations({ identifier: 'LSD.Leader.MessageToApp' })
190
+ ]).annotate({ identifier: 'LSD.Leader.MessageToApp' })
189
191
 
190
192
  export type MessageToApp = typeof MessageToApp.Type
191
193
 
192
- export const MessageFromApp = Schema.Union(
194
+ export const MessageFromApp = Schema.Union([
193
195
  SnapshotRes,
194
196
  LoadDatabaseFile.Response,
195
197
  EventlogRes,
@@ -205,6 +207,6 @@ export const MessageFromApp = Schema.Union(
205
207
  SyncHeadRes,
206
208
  ResetAllData.Success,
207
209
  SetSyncLatch.Success,
208
- ).annotations({ identifier: 'LSD.Leader.MessageFromApp' })
210
+ ]).annotate({ identifier: 'LSD.Leader.MessageFromApp' })
209
211
 
210
212
  export type MessageFromApp = typeof MessageFromApp.Type
@@ -1,6 +1,6 @@
1
- import type { ParseResult, Scope, WebChannel } from '@livestore/utils/effect'
2
1
  import {
3
- Data,
2
+ type Scope,
3
+ type WebChannel,
4
4
  Duration,
5
5
  Effect,
6
6
  FiberMap,
@@ -30,7 +30,7 @@ export const SessionInfo = Schema.TaggedStruct('SessionInfo', {
30
30
  })
31
31
  export type SessionInfo = typeof SessionInfo.Type
32
32
 
33
- export const Message = Schema.Union(RequestSessions, SessionInfo)
33
+ export const Message = Schema.Union([RequestSessions, SessionInfo])
34
34
  export type Message = typeof Message.Type
35
35
 
36
36
  /** Usually called in client session */
@@ -40,12 +40,12 @@ export const provideSessionInfo = ({
40
40
  }: {
41
41
  webChannel: WebChannel.WebChannel<Message, Message>
42
42
  sessionInfo: SessionInfo
43
- }): Effect.Effect<void, ParseResult.ParseError> =>
43
+ }): Effect.Effect<void, Schema.SchemaError> =>
44
44
  Effect.gen(function* () {
45
45
  yield* webChannel.send(sessionInfo)
46
46
 
47
47
  yield* webChannel.listen.pipe(
48
- Stream.flatten(),
48
+ Stream.mapEffect(Effect.fromResult),
49
49
  Stream.filter(Schema.is(RequestSessions)),
50
50
  Stream.tap(() => webChannel.send(sessionInfo)),
51
51
  Stream.runDrain,
@@ -59,9 +59,9 @@ export const requestSessionInfoSubscription = ({
59
59
  staleTimeout = Duration.seconds(5),
60
60
  }: {
61
61
  webChannel: WebChannel.WebChannel<Message, Message>
62
- pollInterval?: Duration.DurationInput
63
- staleTimeout?: Duration.DurationInput
64
- }): Effect.Effect<Subscribable.Subscribable<HashSet.HashSet<SessionInfo>>, ParseResult.ParseError, Scope.Scope> =>
62
+ pollInterval?: Duration.Input
63
+ staleTimeout?: Duration.Input
64
+ }): Effect.Effect<Subscribable.Subscribable<HashSet.HashSet<SessionInfo>>, Schema.SchemaError, Scope.Scope> =>
65
65
  Effect.gen(function* () {
66
66
  yield* webChannel
67
67
  .send(RequestSessions.make({}))
@@ -77,9 +77,8 @@ export const requestSessionInfoSubscription = ({
77
77
  const sessionInfoSubRef = yield* SubscriptionRef.make<HashSet.HashSet<SessionInfo>>(HashSet.empty())
78
78
 
79
79
  yield* webChannel.listen.pipe(
80
- Stream.flatten(),
80
+ Stream.mapEffect(Effect.fromResult),
81
81
  Stream.filter(Schema.is(SessionInfo)),
82
- Stream.map(Data.struct),
83
82
  Stream.tap(
84
83
  Effect.fn(function* (sessionInfo) {
85
84
  yield* SubscriptionRef.getAndUpdate(sessionInfoSubRef, HashSet.add(sessionInfo))
@@ -100,5 +99,8 @@ export const requestSessionInfoSubscription = ({
100
99
  Effect.forkScoped,
101
100
  )
102
101
 
103
- return Subscribable.make({ get: sessionInfoSubRef.get, changes: sessionInfoSubRef.changes })
102
+ return Subscribable.make({
103
+ get: SubscriptionRef.get(sessionInfoSubRef),
104
+ changes: SubscriptionRef.changes(sessionInfoSubRef),
105
+ })
104
106
  })
@@ -1,5 +1,4 @@
1
- import type { Effect, Scope, WebChannel } from '@livestore/utils/effect'
2
- import { Schema } from '@livestore/utils/effect'
1
+ import { type Effect, type Scope, type WebChannel, Schema } from '@livestore/utils/effect'
3
2
  import { nanoid } from '@livestore/utils/nanoid'
4
3
  import type { MeshNode } from '@livestore/webmesh'
5
4
 
@@ -8,18 +7,18 @@ import * as SessionInfo from './devtools-sessioninfo.ts'
8
7
  export * from './devtools-messages.ts'
9
8
  export * as SessionInfo from './devtools-sessioninfo.ts'
10
9
 
11
- export const DevtoolsMode = Schema.Union(
10
+ export const DevtoolsMode = Schema.Union([
12
11
  Schema.TaggedStruct('node', {
13
12
  /** WebSocket URL */
14
13
  url: Schema.String,
15
14
  }),
16
15
  Schema.TaggedStruct('web', {}),
17
16
  Schema.TaggedStruct('browser-extension', {}),
18
- )
17
+ ])
19
18
 
20
19
  export type DevtoolsMode = typeof DevtoolsMode.Type
21
20
 
22
- export const DevtoolsModeTag = DevtoolsMode.pipe(Schema.pluck('_tag'), Schema.typeSchema)
21
+ export const DevtoolsModeTag = Schema.Literals(['node', 'web', 'browser-extension'])
23
22
  export type DevtoolsModeTag = typeof DevtoolsModeTag.Type
24
23
 
25
24
  export const makeNodeName = {
package/src/errors.ts CHANGED
@@ -1,77 +1,89 @@
1
- import { Cause, Effect, Layer, Schema, Stream } from '@livestore/utils/effect'
1
+ import { Cause, Effect, Layer, Option, Schema, Stream, Struct } from '@livestore/utils/effect'
2
2
 
3
3
  import * as LiveStoreEvent from './schema/LiveStoreEvent/mod.ts'
4
4
 
5
5
  export class UnknownError extends Schema.TaggedError<UnknownError>('~@livestore/common/UnknownError')('UnknownError', {
6
- cause: Schema.Defect,
6
+ cause: Schema.Defect(),
7
7
  note: Schema.optional(Schema.String),
8
8
  payload: Schema.optional(Schema.Any),
9
9
  }) {
10
10
  static mapToUnknownError = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
11
11
  effect.pipe(
12
12
  Effect.mapError((cause) => (Schema.is(UnknownError)(cause) === true ? cause : new UnknownError({ cause }))),
13
- Effect.catchAllDefect((cause) => new UnknownError({ cause })),
13
+ Effect.catchDefect((cause) => new UnknownError({ cause })),
14
14
  )
15
15
 
16
16
  static mapToUnknownErrorLayer = <A, E, R>(layer: Layer.Layer<A, E, R>) =>
17
17
  layer.pipe(
18
- Layer.catchAllCause((cause) =>
19
- Cause.isFailType(cause) === true && Schema.is(UnknownError)(cause.error) === true
20
- ? Layer.fail(cause.error)
21
- : Layer.fail(new UnknownError({ cause: cause })),
22
- ),
18
+ Layer.catchCause((cause) => {
19
+ const error = Cause.findErrorOption(cause)
20
+ return Option.isSome(error) === true && Schema.is(UnknownError)(error.value) === true
21
+ ? Layer.effectContext<A, UnknownError, never>(Effect.fail(error.value))
22
+ : Layer.effectContext<A, UnknownError, never>(Effect.fail(new UnknownError({ cause: cause })))
23
+ }),
23
24
  )
24
25
 
25
26
  static mapToUnknownErrorStream = <A, E, R>(stream: Stream.Stream<A, E, R>) =>
26
- stream.pipe(Stream.mapError((cause) => (Schema.is(UnknownError)(cause) === true ? cause : new UnknownError({ cause }))))
27
+ stream.pipe(
28
+ Stream.mapError((cause) => (Schema.is(UnknownError)(cause) === true ? cause : new UnknownError({ cause }))),
29
+ )
27
30
  }
28
31
 
32
+ const materializerHashMismatchNote = 'Please make sure your event materializer is a pure function without side effects.'
33
+
29
34
  export class MaterializerHashMismatchError extends Schema.TaggedError<MaterializerHashMismatchError>(
30
35
  '~@livestore/common/MaterializerHashMismatchError',
31
36
  )('MaterializerHashMismatchError', {
32
- eventName: Schema.String,
33
- note: Schema.optionalWith(Schema.String, {
34
- default: () => 'Please make sure your event materializer is a pure function without side effects.',
35
- }),
36
- },
37
- ) {}
37
+ eventName: Schema.String,
38
+ note: Schema.String.pipe(
39
+ Schema.withDecodingDefaultType(Effect.succeed(materializerHashMismatchNote)),
40
+ Schema.withConstructorDefault(Effect.succeed(materializerHashMismatchNote)),
41
+ ),
42
+ }) {}
38
43
 
39
44
  export class IntentionalShutdownCause extends Schema.TaggedError<IntentionalShutdownCause>(
40
45
  '~@livestore/common/IntentionalShutdownCause',
41
46
  )('IntentionalShutdownCause', {
42
- reason: Schema.Literal('devtools-reset', 'devtools-import', 'adapter-reset', 'manual', 'backend-id-mismatch'),
47
+ reason: Schema.Literals(['devtools-reset', 'devtools-import', 'adapter-reset', 'manual', 'backend-id-mismatch']),
43
48
  }) {}
44
49
 
45
- export class StoreInterrupted extends Schema.TaggedError<StoreInterrupted>(
46
- '~@livestore/common/StoreInterrupted',
47
- )('StoreInterrupted', {
48
- reason: Schema.String,
49
- }) {}
50
+ export class StoreInterrupted extends Schema.TaggedError<StoreInterrupted>('~@livestore/common/StoreInterrupted')(
51
+ 'StoreInterrupted',
52
+ {
53
+ reason: Schema.String,
54
+ },
55
+ ) {}
50
56
 
51
57
  export class SqliteError extends Schema.TaggedError<SqliteError>('~@livestore/common/SqliteError')('SqliteError', {
52
58
  query: Schema.optional(
53
59
  Schema.Struct({
54
60
  sql: Schema.String,
55
- bindValues: Schema.Union(Schema.Record({ key: Schema.String, value: Schema.Any }), Schema.Array(Schema.Any)),
61
+ bindValues: Schema.Union([Schema.Record(Schema.String, Schema.Any), Schema.Array(Schema.Any)]),
56
62
  }),
57
63
  ),
58
64
  /** The SQLite result code */
59
65
  // code: Schema.optional(Schema.Number),
60
66
  // Added string support for Expo SQLite (we should refactor this to have a unified error type)
61
- code: Schema.optional(Schema.Union(Schema.Number, Schema.String)),
67
+ code: Schema.optional(Schema.Union([Schema.Finite, Schema.String])),
62
68
  /** The original SQLite3 error */
63
- cause: Schema.Defect,
69
+ cause: Schema.Defect(),
64
70
  note: Schema.optional(Schema.String),
65
71
  }) {}
66
72
 
67
- export class UnknownEventError extends Schema.TaggedError<UnknownEventError>('~@livestore/common/UnknownEventError')('UnknownEventError', {
68
- event: LiveStoreEvent.Client.Encoded.pipe(Schema.pick('name', 'args', 'seqNum', 'clientId', 'sessionId')),
69
- reason: Schema.Literal('event-definition-missing', 'materializer-missing'),
70
- operation: Schema.String,
71
- note: Schema.optional(Schema.String),
72
- }) {}
73
+ export class UnknownEventError extends Schema.TaggedError<UnknownEventError>('~@livestore/common/UnknownEventError')(
74
+ 'UnknownEventError',
75
+ {
76
+ event: LiveStoreEvent.Client.Encoded.mapFields(Struct.pick(['name', 'args', 'seqNum', 'clientId', 'sessionId'])),
77
+ reason: Schema.Literals(['event-definition-missing', 'materializer-missing']),
78
+ operation: Schema.String,
79
+ note: Schema.optional(Schema.String),
80
+ },
81
+ ) {}
73
82
 
74
- export class MaterializeError extends Schema.TaggedError<MaterializeError>('~@livestore/common/MaterializeError')('MaterializeError', {
75
- cause: Schema.Union(MaterializerHashMismatchError, SqliteError, UnknownEventError),
76
- note: Schema.optional(Schema.String),
77
- }) {}
83
+ export class MaterializeError extends Schema.TaggedError<MaterializeError>('~@livestore/common/MaterializeError')(
84
+ 'MaterializeError',
85
+ {
86
+ cause: Schema.Union([MaterializerHashMismatchError, SqliteError, UnknownEventError]),
87
+ note: Schema.optional(Schema.String),
88
+ },
89
+ ) {}
package/src/index.ts CHANGED
@@ -2,16 +2,23 @@ export * from './adapter-types.ts'
2
2
  export * from './bounded-collections.ts'
3
3
  export * from './debug-info.ts'
4
4
  export * as Devtools from './devtools/mod.ts'
5
+ export * from './leader-thread/RejectedPushError.ts'
5
6
  export * as LogConfig from './logging.ts'
6
7
  export * from './make-client-session.ts'
8
+ export * as MaterializationJournal from './MaterializationJournal.ts'
7
9
  export * from './materializer-helper.ts'
8
10
  export * from './otel.ts'
9
11
  export * from './rematerialize-from-eventlog.ts'
10
12
  export * from './schema/state/sqlite/query-builder/mod.ts'
11
13
  export * from './schema/state/sqlite/system-tables/mod.ts'
12
14
  export * from './schema-management/migrations.ts'
15
+ export {
16
+ resolveSessionIdSymbolInBindValues,
17
+ SessionIdSymbol,
18
+ type BindableWithSessionIdSymbol,
19
+ } from './session-id-symbol.ts'
13
20
  export * as SqliteDbHelper from './sqlite-db-helper.ts'
14
- export * from './leader-thread/RejectedPushError.ts'
21
+ export * as StateHead from './StateHead.ts'
15
22
  export * from './sync/index.ts'
16
23
  export * as SyncState from './sync/syncstate.ts'
17
24
  export * from './util.ts'