@livestore/common 0.4.0-dev.9 → 0.5.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +27 -12
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
  5. package/dist/MaterializationJournal.d.ts +44 -0
  6. package/dist/MaterializationJournal.d.ts.map +1 -0
  7. package/dist/MaterializationJournal.js +112 -0
  8. package/dist/MaterializationJournal.js.map +1 -0
  9. package/dist/StateHead.d.ts +26 -0
  10. package/dist/StateHead.d.ts.map +1 -0
  11. package/dist/StateHead.js +50 -0
  12. package/dist/StateHead.js.map +1 -0
  13. package/dist/WorkerTransportError.d.ts +11 -0
  14. package/dist/WorkerTransportError.d.ts.map +1 -0
  15. package/dist/WorkerTransportError.js +11 -0
  16. package/dist/WorkerTransportError.js.map +1 -0
  17. package/dist/__tests__/fixture.d.ts +1 -1
  18. package/dist/__tests__/fixture.d.ts.map +1 -1
  19. package/dist/__tests__/fixture.js +3 -3
  20. package/dist/__tests__/fixture.js.map +1 -1
  21. package/dist/adapter-types.d.ts +59 -57
  22. package/dist/adapter-types.d.ts.map +1 -1
  23. package/dist/adapter-types.js +31 -22
  24. package/dist/adapter-types.js.map +1 -1
  25. package/dist/bounded-collections.d.ts.map +1 -1
  26. package/dist/bounded-collections.js +6 -4
  27. package/dist/bounded-collections.js.map +1 -1
  28. package/dist/debug-info.d.ts +56 -56
  29. package/dist/debug-info.d.ts.map +1 -1
  30. package/dist/debug-info.js +46 -32
  31. package/dist/debug-info.js.map +1 -1
  32. package/dist/defs.d.ts +9 -9
  33. package/dist/defs.js +2 -2
  34. package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
  35. package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
  36. package/dist/devtools/devtools-compatibility.test.js +16 -0
  37. package/dist/devtools/devtools-compatibility.test.js.map +1 -0
  38. package/dist/devtools/devtools-messages-client-session.d.ts +531 -312
  39. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  40. package/dist/devtools/devtools-messages-client-session.js +86 -67
  41. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  42. package/dist/devtools/devtools-messages-common.d.ts +32 -35
  43. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  44. package/dist/devtools/devtools-messages-common.js +12 -14
  45. package/dist/devtools/devtools-messages-common.js.map +1 -1
  46. package/dist/devtools/devtools-messages-leader.d.ts +417 -320
  47. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  48. package/dist/devtools/devtools-messages-leader.js +117 -87
  49. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  50. package/dist/devtools/devtools-sessioninfo.d.ts +28 -17
  51. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  52. package/dist/devtools/devtools-sessioninfo.js +12 -6
  53. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  54. package/dist/devtools/mod.d.ts +17 -7
  55. package/dist/devtools/mod.d.ts.map +1 -1
  56. package/dist/devtools/mod.js +19 -8
  57. package/dist/devtools/mod.js.map +1 -1
  58. package/dist/errors.d.ts +52 -46
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +31 -21
  61. package/dist/errors.js.map +1 -1
  62. package/dist/index.d.ts +7 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/leader-thread/LeaderSyncProcessor.d.ts +116 -21
  67. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  68. package/dist/leader-thread/LeaderSyncProcessor.js +596 -470
  69. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  70. package/dist/leader-thread/RejectedPushError.d.ts +138 -0
  71. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
  72. package/dist/leader-thread/RejectedPushError.js +97 -0
  73. package/dist/leader-thread/RejectedPushError.js.map +1 -0
  74. package/dist/leader-thread/connection.d.ts +1 -0
  75. package/dist/leader-thread/connection.d.ts.map +1 -1
  76. package/dist/leader-thread/connection.js +10 -9
  77. package/dist/leader-thread/connection.js.map +1 -1
  78. package/dist/leader-thread/eventlog.d.ts +20 -15
  79. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  80. package/dist/leader-thread/eventlog.js +80 -20
  81. package/dist/leader-thread/eventlog.js.map +1 -1
  82. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
  83. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  84. package/dist/leader-thread/leader-worker-devtools.js +110 -62
  85. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  86. package/dist/leader-thread/make-leader-thread-layer.d.ts +19 -7
  87. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  88. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  89. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  90. package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
  91. package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
  92. package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
  93. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
  94. package/dist/leader-thread/materialize-event.d.ts +3 -2
  95. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  96. package/dist/leader-thread/materialize-event.js +32 -9
  97. package/dist/leader-thread/materialize-event.js.map +1 -1
  98. package/dist/leader-thread/mod.d.ts +1 -0
  99. package/dist/leader-thread/mod.d.ts.map +1 -1
  100. package/dist/leader-thread/mod.js +1 -0
  101. package/dist/leader-thread/mod.js.map +1 -1
  102. package/dist/leader-thread/recreate-db.d.ts +2 -2
  103. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  104. package/dist/leader-thread/recreate-db.js +19 -40
  105. package/dist/leader-thread/recreate-db.js.map +1 -1
  106. package/dist/leader-thread/shutdown-channel.d.ts +3 -7
  107. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  108. package/dist/leader-thread/shutdown-channel.js +2 -3
  109. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  110. package/dist/leader-thread/stream-events.d.ts +53 -0
  111. package/dist/leader-thread/stream-events.d.ts.map +1 -0
  112. package/dist/leader-thread/stream-events.js +164 -0
  113. package/dist/leader-thread/stream-events.js.map +1 -0
  114. package/dist/leader-thread/types.d.ts +92 -51
  115. package/dist/leader-thread/types.d.ts.map +1 -1
  116. package/dist/leader-thread/types.js +17 -4
  117. package/dist/leader-thread/types.js.map +1 -1
  118. package/dist/logging.d.ts +15 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +2 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/make-client-session.d.ts +6 -5
  123. package/dist/make-client-session.d.ts.map +1 -1
  124. package/dist/make-client-session.js +10 -7
  125. package/dist/make-client-session.js.map +1 -1
  126. package/dist/materializer-helper.d.ts +6 -7
  127. package/dist/materializer-helper.d.ts.map +1 -1
  128. package/dist/materializer-helper.js +22 -40
  129. package/dist/materializer-helper.js.map +1 -1
  130. package/dist/otel.d.ts +4 -4
  131. package/dist/otel.d.ts.map +1 -1
  132. package/dist/otel.js +8 -8
  133. package/dist/otel.js.map +1 -1
  134. package/dist/rematerialize-from-eventlog.d.ts +3 -3
  135. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  136. package/dist/rematerialize-from-eventlog.js +52 -39
  137. package/dist/rematerialize-from-eventlog.js.map +1 -1
  138. package/dist/schema/EventDef/define.d.ts +161 -0
  139. package/dist/schema/EventDef/define.d.ts.map +1 -0
  140. package/dist/schema/EventDef/define.js +140 -0
  141. package/dist/schema/EventDef/define.js.map +1 -0
  142. package/dist/schema/EventDef/define.test.d.ts +2 -0
  143. package/dist/schema/EventDef/define.test.d.ts.map +1 -0
  144. package/dist/schema/EventDef/define.test.js +23 -0
  145. package/dist/schema/EventDef/define.test.js.map +1 -0
  146. package/dist/schema/EventDef/deprecated.d.ts +94 -0
  147. package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
  148. package/dist/schema/EventDef/deprecated.js +143 -0
  149. package/dist/schema/EventDef/deprecated.js.map +1 -0
  150. package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
  151. package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
  152. package/dist/schema/EventDef/deprecated.test.js +95 -0
  153. package/dist/schema/EventDef/deprecated.test.js.map +1 -0
  154. package/dist/schema/EventDef/event-def.d.ts +110 -0
  155. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  156. package/dist/schema/EventDef/event-def.js +2 -0
  157. package/dist/schema/EventDef/event-def.js.map +1 -0
  158. package/dist/schema/EventDef/facts.d.ts +118 -0
  159. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  160. package/dist/schema/EventDef/facts.js +53 -0
  161. package/dist/schema/EventDef/facts.js.map +1 -0
  162. package/dist/schema/EventDef/materializer.d.ts +155 -0
  163. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  164. package/dist/schema/EventDef/materializer.js +83 -0
  165. package/dist/schema/EventDef/materializer.js.map +1 -0
  166. package/dist/schema/EventDef/mod.d.ts +6 -0
  167. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  168. package/dist/schema/EventDef/mod.js +6 -0
  169. package/dist/schema/EventDef/mod.js.map +1 -0
  170. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  171. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  172. package/dist/schema/EventSequenceNumber/client.js +192 -0
  173. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  174. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  175. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  176. package/dist/schema/EventSequenceNumber/global.js +14 -0
  177. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  178. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  179. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  180. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  181. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  182. package/dist/schema/EventSequenceNumber.test.js +44 -44
  183. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  184. package/dist/schema/LiveStoreEvent/client.d.ts +168 -0
  185. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  186. package/dist/schema/LiveStoreEvent/client.js +179 -0
  187. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  188. package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
  189. package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
  190. package/dist/schema/LiveStoreEvent/client.test.js +120 -0
  191. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
  192. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  193. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  194. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  195. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  196. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  197. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  198. package/dist/schema/LiveStoreEvent/global.js +31 -0
  199. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  200. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  201. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  202. package/dist/schema/LiveStoreEvent/input.js +26 -0
  203. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  204. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  205. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  206. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  207. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  208. package/dist/schema/events.d.ts +1 -1
  209. package/dist/schema/events.d.ts.map +1 -1
  210. package/dist/schema/events.js +1 -1
  211. package/dist/schema/events.js.map +1 -1
  212. package/dist/schema/mod.d.ts +7 -4
  213. package/dist/schema/mod.d.ts.map +1 -1
  214. package/dist/schema/mod.js +6 -4
  215. package/dist/schema/mod.js.map +1 -1
  216. package/dist/schema/schema.d.ts +16 -1
  217. package/dist/schema/schema.d.ts.map +1 -1
  218. package/dist/schema/schema.js +34 -5
  219. package/dist/schema/schema.js.map +1 -1
  220. package/dist/schema/state/sqlite/client-document-def.d.ts +14 -18
  221. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  222. package/dist/schema/state/sqlite/client-document-def.js +54 -30
  223. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  224. package/dist/schema/state/sqlite/client-document-def.test.js +146 -6
  225. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  226. package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
  227. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  228. package/dist/schema/state/sqlite/column-annotations.js +13 -15
  229. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  230. package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
  231. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  232. package/dist/schema/state/sqlite/column-def.d.ts +1 -1
  233. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  234. package/dist/schema/state/sqlite/column-def.js +132 -57
  235. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  236. package/dist/schema/state/sqlite/column-def.test.js +155 -70
  237. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  238. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  239. package/dist/schema/state/sqlite/column-spec.js +30 -12
  240. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  241. package/dist/schema/state/sqlite/column-spec.test.js +26 -17
  242. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  243. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
  244. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  245. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +15 -6
  246. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  247. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +25 -19
  248. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  249. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +22 -16
  250. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  251. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +28 -17
  252. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  253. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +14 -12
  254. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  255. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
  256. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  257. package/dist/schema/state/sqlite/mod.d.ts +3 -5
  258. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  259. package/dist/schema/state/sqlite/mod.js +6 -8
  260. package/dist/schema/state/sqlite/mod.js.map +1 -1
  261. package/dist/schema/state/sqlite/persistence.d.ts +11 -0
  262. package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
  263. package/dist/schema/state/sqlite/persistence.js +10 -0
  264. package/dist/schema/state/sqlite/persistence.js.map +1 -0
  265. package/dist/schema/state/sqlite/query-builder/api.d.ts +58 -29
  266. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  267. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  268. package/dist/schema/state/sqlite/query-builder/astToSql.js +105 -24
  269. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  270. package/dist/schema/state/sqlite/query-builder/impl.d.ts +4 -2
  271. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  272. package/dist/schema/state/sqlite/query-builder/impl.js +42 -27
  273. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  274. package/dist/schema/state/sqlite/query-builder/impl.test.js +402 -498
  275. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  276. package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
  277. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  278. package/dist/schema/state/sqlite/schema-helpers.js +24 -14
  279. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  280. package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
  281. package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
  282. package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
  283. package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
  284. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +515 -0
  285. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  286. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  287. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  288. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  289. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  290. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  291. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  292. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +678 -0
  293. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  294. package/dist/schema/state/sqlite/system-tables/state-tables.js +87 -0
  295. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  296. package/dist/schema/state/sqlite/table-def.d.ts +19 -20
  297. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  298. package/dist/schema/state/sqlite/table-def.js +54 -4
  299. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  300. package/dist/schema/state/sqlite/table-def.test.js +226 -20
  301. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  302. package/dist/schema/unknown-events.d.ts +47 -0
  303. package/dist/schema/unknown-events.d.ts.map +1 -0
  304. package/dist/schema/unknown-events.js +70 -0
  305. package/dist/schema/unknown-events.js.map +1 -0
  306. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
  307. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
  308. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
  309. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
  310. package/dist/schema-management/common.js +2 -2
  311. package/dist/schema-management/common.js.map +1 -1
  312. package/dist/schema-management/migrations.d.ts +32 -2
  313. package/dist/schema-management/migrations.d.ts.map +1 -1
  314. package/dist/schema-management/migrations.js +38 -6
  315. package/dist/schema-management/migrations.js.map +1 -1
  316. package/dist/schema-management/validate-schema.d.ts +3 -3
  317. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  318. package/dist/schema-management/validate-schema.js +2 -2
  319. package/dist/schema-management/validate-schema.js.map +1 -1
  320. package/dist/session-id-symbol.d.ts +29 -0
  321. package/dist/session-id-symbol.d.ts.map +1 -0
  322. package/dist/session-id-symbol.js +44 -0
  323. package/dist/session-id-symbol.js.map +1 -0
  324. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  325. package/dist/sql-queries/sql-queries.js +26 -16
  326. package/dist/sql-queries/sql-queries.js.map +1 -1
  327. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  328. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  329. package/dist/sql-queries/types.d.ts +6 -7
  330. package/dist/sql-queries/types.d.ts.map +1 -1
  331. package/dist/sql-queries/types.js.map +1 -1
  332. package/dist/sqlite-db-helper.d.ts +21 -1
  333. package/dist/sqlite-db-helper.d.ts.map +1 -1
  334. package/dist/sqlite-db-helper.js +40 -5
  335. package/dist/sqlite-db-helper.js.map +1 -1
  336. package/dist/sqlite-types.d.ts +8 -11
  337. package/dist/sqlite-types.d.ts.map +1 -1
  338. package/dist/sqlite-types.js +3 -3
  339. package/dist/sqlite-types.js.map +1 -1
  340. package/dist/sync/ClientSessionSyncProcessor.d.ts +47 -25
  341. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  342. package/dist/sync/ClientSessionSyncProcessor.js +269 -154
  343. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  344. package/dist/sync/errors.d.ts +12 -51
  345. package/dist/sync/errors.d.ts.map +1 -1
  346. package/dist/sync/errors.js +7 -24
  347. package/dist/sync/errors.js.map +1 -1
  348. package/dist/sync/index.d.ts +2 -0
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +2 -0
  351. package/dist/sync/index.js.map +1 -1
  352. package/dist/sync/mock-sync-backend.d.ts +11 -10
  353. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  354. package/dist/sync/mock-sync-backend.js +97 -74
  355. package/dist/sync/mock-sync-backend.js.map +1 -1
  356. package/dist/sync/mock-sync-backend.test.d.ts +2 -0
  357. package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
  358. package/dist/sync/mock-sync-backend.test.js +49 -0
  359. package/dist/sync/mock-sync-backend.test.js.map +1 -0
  360. package/dist/sync/next/compact-events.d.ts.map +1 -1
  361. package/dist/sync/next/compact-events.js +11 -12
  362. package/dist/sync/next/compact-events.js.map +1 -1
  363. package/dist/sync/next/facts.d.ts +5 -5
  364. package/dist/sync/next/facts.d.ts.map +1 -1
  365. package/dist/sync/next/facts.js +7 -8
  366. package/dist/sync/next/facts.js.map +1 -1
  367. package/dist/sync/next/history-dag-common.d.ts +58 -15
  368. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  369. package/dist/sync/next/history-dag-common.js +219 -9
  370. package/dist/sync/next/history-dag-common.js.map +1 -1
  371. package/dist/sync/next/history-dag.d.ts.map +1 -1
  372. package/dist/sync/next/history-dag.js +12 -11
  373. package/dist/sync/next/history-dag.js.map +1 -1
  374. package/dist/sync/next/rebase-events.d.ts +5 -5
  375. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  376. package/dist/sync/next/rebase-events.js +6 -6
  377. package/dist/sync/next/rebase-events.js.map +1 -1
  378. package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
  379. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  380. package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
  381. package/dist/sync/next/test/compact-events.test.js +2 -2
  382. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  383. package/dist/sync/next/test/event-fixtures.d.ts +9 -9
  384. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  385. package/dist/sync/next/test/event-fixtures.js +12 -12
  386. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  387. package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
  388. package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
  389. package/dist/sync/next/test/history-dag-common.test.js +73 -0
  390. package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
  391. package/dist/sync/sync-backend-kv.d.ts +3 -3
  392. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  393. package/dist/sync/sync-backend-kv.js +6 -4
  394. package/dist/sync/sync-backend-kv.js.map +1 -1
  395. package/dist/sync/sync-backend.d.ts +41 -21
  396. package/dist/sync/sync-backend.d.ts.map +1 -1
  397. package/dist/sync/sync-backend.js +45 -4
  398. package/dist/sync/sync-backend.js.map +1 -1
  399. package/dist/sync/sync.d.ts +23 -2
  400. package/dist/sync/sync.d.ts.map +1 -1
  401. package/dist/sync/syncstate.d.ts +115 -191
  402. package/dist/sync/syncstate.d.ts.map +1 -1
  403. package/dist/sync/syncstate.js +108 -129
  404. package/dist/sync/syncstate.js.map +1 -1
  405. package/dist/sync/syncstate.test.js +289 -161
  406. package/dist/sync/syncstate.test.js.map +1 -1
  407. package/dist/sync/transport-chunking.d.ts +35 -0
  408. package/dist/sync/transport-chunking.d.ts.map +1 -0
  409. package/dist/sync/transport-chunking.js +47 -0
  410. package/dist/sync/transport-chunking.js.map +1 -0
  411. package/dist/sync/validate-push-payload.d.ts +2 -2
  412. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  413. package/dist/sync/validate-push-payload.js +4 -6
  414. package/dist/sync/validate-push-payload.js.map +1 -1
  415. package/dist/testing/event-factory.d.ts +3 -3
  416. package/dist/testing/event-factory.d.ts.map +1 -1
  417. package/dist/testing/event-factory.js +5 -7
  418. package/dist/testing/event-factory.js.map +1 -1
  419. package/dist/util.d.ts +11 -4
  420. package/dist/util.d.ts.map +1 -1
  421. package/dist/util.js +21 -4
  422. package/dist/util.js.map +1 -1
  423. package/dist/version.d.ts +24 -5
  424. package/dist/version.d.ts.map +1 -1
  425. package/dist/version.js +25 -8
  426. package/dist/version.js.map +1 -1
  427. package/package.json +50 -16
  428. package/src/ClientSessionLeaderThreadProxy.ts +27 -12
  429. package/src/MaterializationJournal.ts +184 -0
  430. package/src/StateHead.ts +80 -0
  431. package/src/WorkerTransportError.ts +12 -0
  432. package/src/__tests__/fixture.ts +3 -3
  433. package/src/adapter-types.ts +62 -56
  434. package/src/bounded-collections.ts +6 -5
  435. package/src/debug-info.ts +54 -43
  436. package/src/defs.ts +2 -2
  437. package/src/devtools/devtools-compatibility.test.ts +19 -0
  438. package/src/devtools/devtools-messages-client-session.ts +72 -63
  439. package/src/devtools/devtools-messages-common.ts +18 -22
  440. package/src/devtools/devtools-messages-leader.ts +89 -68
  441. package/src/devtools/devtools-sessioninfo.ts +17 -12
  442. package/src/devtools/mod.ts +15 -7
  443. package/src/errors.ts +58 -38
  444. package/src/index.ts +11 -1
  445. package/src/leader-thread/LeaderSyncProcessor.ts +927 -674
  446. package/src/leader-thread/RejectedPushError.ts +119 -0
  447. package/src/leader-thread/connection.ts +13 -9
  448. package/src/leader-thread/eventlog.ts +114 -41
  449. package/src/leader-thread/leader-worker-devtools.ts +223 -124
  450. package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
  451. package/src/leader-thread/make-leader-thread-layer.ts +170 -82
  452. package/src/leader-thread/materialize-event.ts +51 -16
  453. package/src/leader-thread/mod.ts +1 -0
  454. package/src/leader-thread/recreate-db.ts +26 -61
  455. package/src/leader-thread/shutdown-channel.ts +3 -18
  456. package/src/leader-thread/stream-events.ts +209 -0
  457. package/src/leader-thread/types.ts +77 -65
  458. package/src/logging.ts +15 -0
  459. package/src/make-client-session.ts +16 -10
  460. package/src/materializer-helper.ts +31 -49
  461. package/src/otel.ts +15 -13
  462. package/src/rematerialize-from-eventlog.ts +106 -93
  463. package/src/schema/EventDef/define.test.ts +28 -0
  464. package/src/schema/EventDef/define.ts +218 -0
  465. package/src/schema/EventDef/deprecated.test.ts +122 -0
  466. package/src/schema/EventDef/deprecated.ts +172 -0
  467. package/src/schema/EventDef/event-def.ts +123 -0
  468. package/src/schema/EventDef/facts.ts +135 -0
  469. package/src/schema/EventDef/materializer.ts +172 -0
  470. package/src/schema/EventDef/mod.ts +5 -0
  471. package/src/schema/EventSequenceNumber/client.ts +256 -0
  472. package/src/schema/EventSequenceNumber/global.ts +19 -0
  473. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  474. package/src/schema/EventSequenceNumber.test.ts +72 -53
  475. package/src/schema/LiveStoreEvent/client.test.ts +142 -0
  476. package/src/schema/LiveStoreEvent/client.ts +236 -0
  477. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  478. package/src/schema/LiveStoreEvent/global.ts +45 -0
  479. package/src/schema/LiveStoreEvent/input.ts +63 -0
  480. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  481. package/src/schema/events.ts +1 -1
  482. package/src/schema/mod.ts +7 -4
  483. package/src/schema/schema.ts +48 -6
  484. package/src/schema/state/sqlite/client-document-def.test.ts +172 -14
  485. package/src/schema/state/sqlite/client-document-def.ts +126 -98
  486. package/src/schema/state/sqlite/column-annotations.test.ts +27 -45
  487. package/src/schema/state/sqlite/column-annotations.ts +27 -30
  488. package/src/schema/state/sqlite/column-def.test.ts +186 -77
  489. package/src/schema/state/sqlite/column-def.ts +169 -62
  490. package/src/schema/state/sqlite/column-spec.test.ts +34 -19
  491. package/src/schema/state/sqlite/column-spec.ts +38 -11
  492. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +17 -7
  493. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
  494. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +37 -17
  495. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +65 -45
  496. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +48 -40
  497. package/src/schema/state/sqlite/mod.ts +9 -12
  498. package/src/schema/state/sqlite/persistence.ts +11 -0
  499. package/src/schema/state/sqlite/query-builder/api.ts +61 -23
  500. package/src/schema/state/sqlite/query-builder/astToSql.ts +117 -23
  501. package/src/schema/state/sqlite/query-builder/impl.test.ts +489 -551
  502. package/src/schema/state/sqlite/query-builder/impl.ts +43 -26
  503. package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
  504. package/src/schema/state/sqlite/schema-helpers.ts +30 -22
  505. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  506. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  507. package/src/schema/state/sqlite/system-tables/state-tables.ts +109 -0
  508. package/src/schema/state/sqlite/table-def.test.ts +295 -46
  509. package/src/schema/state/sqlite/table-def.ts +109 -64
  510. package/src/schema/unknown-events.ts +132 -0
  511. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
  512. package/src/schema-management/common.ts +2 -2
  513. package/src/schema-management/migrations.ts +42 -9
  514. package/src/schema-management/validate-schema.ts +3 -3
  515. package/src/session-id-symbol.ts +59 -0
  516. package/src/sql-queries/sql-queries.ts +26 -18
  517. package/src/sql-queries/sql-query-builder.ts +1 -0
  518. package/src/sql-queries/types.ts +6 -7
  519. package/src/sqlite-db-helper.ts +67 -5
  520. package/src/sqlite-types.ts +9 -11
  521. package/src/sync/ClientSessionSyncProcessor.ts +388 -194
  522. package/src/sync/errors.ts +18 -28
  523. package/src/sync/index.ts +2 -0
  524. package/src/sync/mock-sync-backend.test.ts +78 -0
  525. package/src/sync/mock-sync-backend.ts +196 -108
  526. package/src/sync/next/compact-events.ts +10 -11
  527. package/src/sync/next/facts.ts +13 -14
  528. package/src/sync/next/history-dag-common.ts +306 -26
  529. package/src/sync/next/history-dag.ts +20 -13
  530. package/src/sync/next/rebase-events.ts +12 -12
  531. package/src/sync/next/test/compact-events.calculator.test.ts +5 -4
  532. package/src/sync/next/test/compact-events.test.ts +4 -3
  533. package/src/sync/next/test/event-fixtures.ts +14 -14
  534. package/src/sync/next/test/history-dag-common.test.ts +87 -0
  535. package/src/sync/sync-backend-kv.ts +7 -4
  536. package/src/sync/sync-backend.ts +75 -26
  537. package/src/sync/sync.ts +24 -2
  538. package/src/sync/syncstate.test.ts +657 -442
  539. package/src/sync/syncstate.ts +175 -160
  540. package/src/sync/transport-chunking.ts +85 -0
  541. package/src/sync/validate-push-payload.ts +6 -8
  542. package/src/testing/event-factory.ts +10 -12
  543. package/src/util.ts +20 -11
  544. package/src/version.ts +32 -8
  545. package/dist/schema/EventDef.d.ts +0 -126
  546. package/dist/schema/EventDef.d.ts.map +0 -1
  547. package/dist/schema/EventDef.js +0 -46
  548. package/dist/schema/EventDef.js.map +0 -1
  549. package/dist/schema/EventSequenceNumber.d.ts +0 -80
  550. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  551. package/dist/schema/EventSequenceNumber.js +0 -139
  552. package/dist/schema/EventSequenceNumber.js.map +0 -1
  553. package/dist/schema/LiveStoreEvent.d.ts +0 -306
  554. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  555. package/dist/schema/LiveStoreEvent.js +0 -147
  556. package/dist/schema/LiveStoreEvent.js.map +0 -1
  557. package/dist/schema/state/sqlite/system-tables.d.ts +0 -976
  558. package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
  559. package/dist/schema/state/sqlite/system-tables.js +0 -81
  560. package/dist/schema/state/sqlite/system-tables.js.map +0 -1
  561. package/dist/sql-queries/misc.d.ts +0 -2
  562. package/dist/sql-queries/misc.d.ts.map +0 -1
  563. package/dist/sql-queries/misc.js +0 -2
  564. package/dist/sql-queries/misc.js.map +0 -1
  565. package/dist/sync/next/graphology.d.ts +0 -8
  566. package/dist/sync/next/graphology.d.ts.map +0 -1
  567. package/dist/sync/next/graphology.js +0 -30
  568. package/dist/sync/next/graphology.js.map +0 -1
  569. package/dist/sync/next/graphology_.d.ts +0 -3
  570. package/dist/sync/next/graphology_.d.ts.map +0 -1
  571. package/dist/sync/next/graphology_.js +0 -3
  572. package/dist/sync/next/graphology_.js.map +0 -1
  573. package/src/schema/EventDef.ts +0 -222
  574. package/src/schema/EventSequenceNumber.ts +0 -199
  575. package/src/schema/LiveStoreEvent.ts +0 -286
  576. package/src/schema/state/sqlite/system-tables.ts +0 -106
  577. package/src/sql-queries/misc.ts +0 -2
  578. package/src/sync/next/ambient.d.ts +0 -3
  579. package/src/sync/next/graphology.ts +0 -41
  580. package/src/sync/next/graphology_.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGtE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;;;IAyC3D,kFAAkF;;;;;;IAElF,qEAAqE;;;;;;;;IAFrE,kFAAkF;;;;;;IAElF,qEAAqE;;;;;;;;;;;;;;;;;;;;;AAzCvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,SAAU,SAAQ,cAM7B;IACA,MAAM,QAAO,GAAG,CAId;CACH;;IAMC,0CAA0C;;IAE1C,gGAAgG;;;AANlG;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAKzC;CAAG;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAE1C;CAAG;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG;;AAEL,qBAAa,OAAQ,SAAQ,YAA6E;CAAG;;AAE7G,qBAAa,eAAgB,SAAQ,oBAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;AAEnG,uCAAuC;AACvC,qBAAa,YAAa,SAAQ,iBAGhC;IACA,MAAM,QAAO,GAAG,CAqBf;CACF;;;;;IAMC,iEAAiE;;;;;;;IAAjE,iEAAiE;;;;;;;;;;;;;;AAJnE,qBAAa,kBAAmB,SAAQ,uBAOtC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;;;IAMC,0CAA0C;;;;;;;IAA1C,0CAA0C;;;;;;;;;;;;;;AAJ5C,qBAAa,iBAAkB,SAAQ,sBAOrC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;IAIC,mDAAmD;;;;;;;;;IAAnD,mDAAmD;;;;;;;;;;;;;;;;;;AAFrD,qBAAa,iBAAkB,SAAQ,sBAKrC;IACA,MAAM,QAAO,GAAG,CAMf;CACF;;;;;;;;;;;;AAED,qBAAa,0BAA2B,SAAQ,+BAG9C;CAAG;;AAEL,qBAAa,WAAY,SAAQ,gBAKhC;CAAG;AAEJ,eAAO,MAAM,sBAAsB,GACjC,aAAa,OAAO,kBAAkB,CAAC,IAAI,GAAG,OAAO,iBAAiB,CAAC,IAAI,KAC1E,OAAO,eAAe,CAAC,IAYvB,CAAA;AAkBH,eAAO,MAAM,KAAK,GAAI,0EAMnB;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC,IAAI,CAAA;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,KAAK,OAAO,CAAA;IACjE,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,eAAe,KAAK,OAAO,CAAA;IAC/F,8GAA8G;IAC9G,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,KAAG,OAAO,WAAW,CAAC,IAmNtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,sFAMjC;IACD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;IAC7D,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;IAC7D,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,eAAe,KAAK,OAAO,CAAA;IAC/F,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,KAAK,OAAO,CAAA;IACjE,kBAAkB,EAAE,OAAO,CAAA;CAC5B,KAAG,MAyBH,CAAA"}
1
+ {"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE9E,OAAO,KAAK,mBAAmB,MAAM,sCAAsC,CAAA;AAC3E,OAAO,KAAK,cAAc,MAAM,iCAAiC,CAAA;;;IAyC/D,kFAAkF;;;;;;;;IAElF,qEAAqE;;;;;;;;;AAzCvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,SAAU,SAAQ,cAM7B;IACA,MAAM,QAAO,GAAG,CAId;CACH;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,0CAA0C;;IAE1C,gGAAgG;;EAEhG,CAAA;AAEF,eAAO,MAAM,sBAAsB;;EAEjC,CAAA;AAEF,eAAO,MAAM,gBAAgB;;EAE3B,CAAA;AAEF,eAAO,MAAM,OAAO;IAdlB,0CAA0C;;IAE1C,gGAAgG;;;;;;IAYI,CAAA;AAEtG,eAAO,MAAM,eAAe;IAhB1B,0CAA0C;;IAE1C,gGAAgG;;;;IAcN,CAAA;;;QAhB1F,0CAA0C;;QAE1C,gGAAgG;;;;;;;;;AAgBlG,uCAAuC;AACvC,qBAAa,YAAa,SAAQ,iBAGhC;IACA,MAAM,QAAO,GAAG,CAqBf;CACF;;;;;IAMC,iEAAiE;;;;AAJnE,qBAAa,kBAAmB,SAAQ,uBAOtC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;;;IAMC,0CAA0C;;;;AAJ5C,qBAAa,iBAAkB,SAAQ,sBAOrC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;IAIC,mDAAmD;;;;;;;;;;AAFrD,qBAAa,iBAAkB,SAAQ,sBAKrC;IACA,MAAM,QAAO,GAAG,CAMf;CACF;AAED,eAAO,MAAM,WAAW,wGAA2E,CAAA;AAEnG,eAAO,MAAM,sBAAsB,GACjC,aAAa,kBAAkB,GAAG,iBAAiB,KAClD,OAAO,eAAe,CAAC,IAYvB,CAAA;AASH,eAAO,MAAM,KAAK;eAOL,SAAS;aACX,OAAO,OAAO,CAAC,IAAI;IAC5B;;;;;OAKG;uBACgB,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO;IAC5E;;;;;OAKG;kBACW,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO;IAC7G;;;OAGG;6BACsB,OAAO;6FAgOhC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,8FAMjC;IACD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACpE,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACpE,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO,CAAA;IAC7G,iBAAiB,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO,CAAA;IAC5E,sBAAsB,EAAE,OAAO,CAAA;CAChC,KAAG,MAyBH,CAAA"}
@@ -1,7 +1,7 @@
1
- import { casesHandled, LS_DEV, shouldNeverHappen } from '@livestore/utils';
2
- import { Match, ReadonlyArray, Schema } from '@livestore/utils/effect';
3
- import * as EventSequenceNumber from "../schema/EventSequenceNumber.js";
4
- import * as LiveStoreEvent from "../schema/LiveStoreEvent.js";
1
+ import { casesHandled } from '@livestore/utils';
2
+ import { Effect, Match, ReadonlyArray, Schema } from '@livestore/utils/effect';
3
+ import * as EventSequenceNumber from "../schema/EventSequenceNumber/mod.js";
4
+ import * as LiveStoreEvent from "../schema/LiveStoreEvent/mod.js";
5
5
  /**
6
6
  * SyncState represents the current sync state of a sync node relative to an upstream node.
7
7
  * Events flow from local to upstream, with each state maintaining its own event head.
@@ -13,7 +13,7 @@ import * as LiveStoreEvent from "../schema/LiveStoreEvent.js";
13
13
  * +------------------------+
14
14
  * ▼ ▼
15
15
  * Upstream Head Local Head
16
- * (1,0) (1,1), (1,2), (2,0)
16
+ * e1 e1.1, e1.2, e2
17
17
  * ```
18
18
  *
19
19
  * **Pending Events**: Events awaiting acknowledgment from the upstream.
@@ -29,7 +29,7 @@ import * as LiveStoreEvent from "../schema/LiveStoreEvent.js";
29
29
  * Invariants:
30
30
  * 1. **Chain Continuity**: Each event must reference its immediate parent.
31
31
  * 2. **Head Ordering**: Upstream Head ≤ Local Head.
32
- * 3. **Event number sequence**: Must follow the pattern (1,0)(1,1)(1,2)(2,0).
32
+ * 3. **Event number sequence**: Must follow the pattern e1e1.1→e1.2→e2.
33
33
  *
34
34
  * A few further notes to help form an intuition:
35
35
  * - The goal is to keep the pending events as small as possible (i.e. to have synced with the next upstream node)
@@ -40,40 +40,35 @@ import * as LiveStoreEvent from "../schema/LiveStoreEvent.js";
40
40
  * handling cases such as upstream rebase, advance and local push.
41
41
  */
42
42
  export class SyncState extends Schema.Class('SyncState')({
43
- pending: Schema.Array(LiveStoreEvent.EncodedWithMeta),
43
+ pending: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
44
44
  /** What this node expects the next upstream node to have as its own local head */
45
- upstreamHead: EventSequenceNumber.EventSequenceNumber,
45
+ upstreamHead: EventSequenceNumber.Client.Composite,
46
46
  /** Equivalent to `pending.at(-1)?.id` if there are pending events */
47
- localHead: EventSequenceNumber.EventSequenceNumber,
47
+ localHead: EventSequenceNumber.Client.Composite,
48
48
  }) {
49
49
  toJSON = () => ({
50
50
  pending: this.pending.map((e) => e.toJSON()),
51
- upstreamHead: EventSequenceNumber.toString(this.upstreamHead),
52
- localHead: EventSequenceNumber.toString(this.localHead),
51
+ upstreamHead: EventSequenceNumber.Client.toString(this.upstreamHead),
52
+ localHead: EventSequenceNumber.Client.toString(this.localHead),
53
53
  });
54
54
  }
55
55
  /**
56
56
  * This payload propagates a rebase from the upstream node
57
57
  */
58
- export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
58
+ export const PayloadUpstreamRebase = Schema.TaggedStruct('upstream-rebase', {
59
59
  /** Events which need to be rolled back */
60
- rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
60
+ rollbackEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
61
61
  /** Events which need to be applied after the rollback (already rebased by the upstream node) */
62
- newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
63
- }) {
64
- }
65
- export class PayloadUpstreamAdvance extends Schema.TaggedStruct('upstream-advance', {
66
- newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
67
- }) {
68
- }
69
- export class PayloadLocalPush extends Schema.TaggedStruct('local-push', {
70
- newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
71
- }) {
72
- }
73
- export class Payload extends Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance, PayloadLocalPush) {
74
- }
75
- export class PayloadUpstream extends Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance) {
76
- }
62
+ newEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
63
+ });
64
+ export const PayloadUpstreamAdvance = Schema.TaggedStruct('upstream-advance', {
65
+ newEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
66
+ });
67
+ export const PayloadLocalPush = Schema.TaggedStruct('local-push', {
68
+ newEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
69
+ });
70
+ export const Payload = Schema.Union([PayloadUpstreamRebase, PayloadUpstreamAdvance, PayloadLocalPush]);
71
+ export const PayloadUpstream = Schema.Union([PayloadUpstreamRebase, PayloadUpstreamAdvance]);
77
72
  /** Only used for debugging purposes */
78
73
  export class MergeContext extends Schema.Class('MergeContext')({
79
74
  payload: Payload,
@@ -100,9 +95,9 @@ export class MergeContext extends Schema.Class('MergeContext')({
100
95
  export class MergeResultAdvance extends Schema.Class('MergeResultAdvance')({
101
96
  _tag: Schema.Literal('advance'),
102
97
  newSyncState: SyncState,
103
- newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
98
+ newEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
104
99
  /** Events which were previously pending but are now confirmed */
105
- confirmedEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
100
+ confirmedEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
106
101
  mergeContext: MergeContext,
107
102
  }) {
108
103
  toJSON = () => {
@@ -118,9 +113,9 @@ export class MergeResultAdvance extends Schema.Class('MergeResultAdvance')({
118
113
  export class MergeResultRebase extends Schema.Class('MergeResultRebase')({
119
114
  _tag: Schema.Literal('rebase'),
120
115
  newSyncState: SyncState,
121
- newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
116
+ newEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
122
117
  /** Events which need to be rolled back */
123
- rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
118
+ rollbackEvents: Schema.Array(LiveStoreEvent.Client.EncodedWithMeta),
124
119
  mergeContext: MergeContext,
125
120
  }) {
126
121
  toJSON = () => {
@@ -136,24 +131,18 @@ export class MergeResultRebase extends Schema.Class('MergeResultRebase')({
136
131
  export class MergeResultReject extends Schema.Class('MergeResultReject')({
137
132
  _tag: Schema.Literal('reject'),
138
133
  /** The minimum id that the new events must have */
139
- expectedMinimumId: EventSequenceNumber.EventSequenceNumber,
134
+ expectedMinimumId: EventSequenceNumber.Client.Composite,
140
135
  mergeContext: MergeContext,
141
136
  }) {
142
137
  toJSON = () => {
143
138
  return {
144
139
  _tag: this._tag,
145
- expectedMinimumId: EventSequenceNumber.toString(this.expectedMinimumId),
140
+ expectedMinimumId: EventSequenceNumber.Client.toString(this.expectedMinimumId),
146
141
  mergeContext: this.mergeContext.toJSON(),
147
142
  };
148
143
  };
149
144
  }
150
- export class MergeResultUnexpectedError extends Schema.Class('MergeResultUnexpectedError')({
151
- _tag: Schema.Literal('unexpected-error'),
152
- message: Schema.String,
153
- }) {
154
- }
155
- export class MergeResult extends Schema.Union(MergeResultAdvance, MergeResultRebase, MergeResultReject, MergeResultUnexpectedError) {
156
- }
145
+ export const MergeResult = Schema.Union([MergeResultAdvance, MergeResultRebase, MergeResultReject]);
157
146
  export const payloadFromMergeResult = (mergeResult) => Match.value(mergeResult).pipe(Match.tag('advance', (result) => ({
158
147
  _tag: 'upstream-advance',
159
148
  newEvents: result.newEvents,
@@ -162,13 +151,6 @@ export const payloadFromMergeResult = (mergeResult) => Match.value(mergeResult).
162
151
  newEvents: result.newEvents,
163
152
  rollbackEvents: result.rollbackEvents,
164
153
  })), Match.exhaustive);
165
- const unexpectedError = (message) => {
166
- if (LS_DEV) {
167
- // biome-ignore lint/suspicious/noDebugger: debug
168
- debugger;
169
- }
170
- return MergeResultUnexpectedError.make({ _tag: 'unexpected-error', message });
171
- };
172
154
  // TODO Idea: call merge recursively through hierarchy levels
173
155
  /*
174
156
  Idea: have a map that maps from `globalEventSequenceNumber` to Array<ClientEvents>
@@ -176,9 +158,9 @@ The same applies to even further hierarchy levels
176
158
 
177
159
  TODO: possibly even keep the client events in a separate table in the client leader
178
160
  */
179
- export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreClientEvents = false, }) => {
180
- validateSyncState(syncState);
181
- validatePayload(payload);
161
+ export const merge = Effect.fnUntraced(function* ({ syncState, payload, isClientOnlyEvent, isEqualEvent, ignoreClientOnlyEvents = false, }) {
162
+ yield* validateSyncState(syncState);
163
+ yield* validatePayload(payload);
182
164
  const mergeContext = MergeContext.make({ payload, syncState });
183
165
  switch (payload._tag) {
184
166
  case 'upstream-rebase': {
@@ -189,9 +171,9 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
189
171
  const rebasedPending = rebaseEvents({
190
172
  events: syncState.pending,
191
173
  baseEventSequenceNumber: newUpstreamHead,
192
- isClientEvent,
174
+ isClientOnlyEvent,
193
175
  });
194
- return validateMergeResult(MergeResultRebase.make({
176
+ return yield* validateMergeResult(MergeResultRebase.make({
195
177
  _tag: 'rebase',
196
178
  newSyncState: new SyncState({
197
179
  pending: rebasedPending,
@@ -203,10 +185,10 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
203
185
  mergeContext,
204
186
  }));
205
187
  }
206
- // #region upstream-advance
188
+ //#region upstream-advance
207
189
  case 'upstream-advance': {
208
190
  if (payload.newEvents.length === 0) {
209
- return validateMergeResult(MergeResultAdvance.make({
191
+ return yield* validateMergeResult(MergeResultAdvance.make({
210
192
  _tag: 'advance',
211
193
  newSyncState: new SyncState({
212
194
  pending: syncState.pending,
@@ -220,22 +202,23 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
220
202
  }
221
203
  // Validate that newEvents are sorted in ascending order by eventNum
222
204
  for (let i = 1; i < payload.newEvents.length; i++) {
223
- if (EventSequenceNumber.isGreaterThan(payload.newEvents[i - 1].seqNum, payload.newEvents[i].seqNum)) {
224
- return unexpectedError(`Events must be sorted in ascending order by event number. Received: [${payload.newEvents.map((e) => EventSequenceNumber.toString(e.seqNum)).join(', ')}]`);
205
+ if (EventSequenceNumber.Client.isGreaterThan(payload.newEvents[i - 1].seqNum, payload.newEvents[i].seqNum) ===
206
+ true) {
207
+ return yield* Effect.dieDebugger(`Events must be sorted in ascending order by event number. Received: [${payload.newEvents.map((e) => EventSequenceNumber.Client.toString(e.seqNum)).join(', ')}]`);
225
208
  }
226
209
  }
227
210
  // Validate that incoming events are larger than upstream head
228
- if (EventSequenceNumber.isGreaterThan(syncState.upstreamHead, payload.newEvents[0].seqNum) ||
229
- EventSequenceNumber.isEqual(syncState.upstreamHead, payload.newEvents[0].seqNum)) {
230
- return unexpectedError(`Incoming events must be greater than upstream head. Expected greater than: ${EventSequenceNumber.toString(syncState.upstreamHead)}. Received: [${payload.newEvents.map((e) => EventSequenceNumber.toString(e.seqNum)).join(', ')}]`);
211
+ if (EventSequenceNumber.Client.isGreaterThan(syncState.upstreamHead, payload.newEvents[0].seqNum) === true ||
212
+ EventSequenceNumber.Client.isEqual(syncState.upstreamHead, payload.newEvents[0].seqNum) === true) {
213
+ return yield* Effect.dieDebugger(`Incoming events must be greater than upstream head. Expected greater than: ${EventSequenceNumber.Client.toString(syncState.upstreamHead)}. Received: [${payload.newEvents.map((e) => EventSequenceNumber.Client.toString(e.seqNum)).join(', ')}]`);
231
214
  }
232
215
  const newUpstreamHead = payload.newEvents.at(-1).seqNum;
233
216
  const divergentPendingIndex = findDivergencePoint({
234
217
  existingEvents: syncState.pending,
235
218
  incomingEvents: payload.newEvents,
236
219
  isEqualEvent,
237
- isClientEvent,
238
- ignoreClientEvents,
220
+ isClientOnlyEvent,
221
+ ignoreClientOnlyEvents,
239
222
  });
240
223
  // No divergent pending events, thus we can just advance (some of) the pending events
241
224
  if (divergentPendingIndex === -1) {
@@ -248,22 +231,22 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
248
231
  // The `clientIndexOffset` is used to account for the client events that are being ignored
249
232
  let clientIndexOffset = 0;
250
233
  const [pendingMatching, pendingRemaining] = ReadonlyArray.splitWhere(syncState.pending, (pendingEvent, index) => {
251
- if (ignoreClientEvents && isClientEvent(pendingEvent)) {
234
+ if (ignoreClientOnlyEvents === true && isClientOnlyEvent(pendingEvent) === true) {
252
235
  clientIndexOffset++;
253
236
  return false;
254
237
  }
255
238
  const newEvent = payload.newEvents.at(index - clientIndexOffset);
256
- if (!newEvent) {
239
+ if (newEvent == null) {
257
240
  return true;
258
241
  }
259
- return isEqualEvent(pendingEvent, newEvent) === false;
242
+ return !isEqualEvent(pendingEvent, newEvent);
260
243
  });
261
- return validateMergeResult(MergeResultAdvance.make({
244
+ return yield* validateMergeResult(MergeResultAdvance.make({
262
245
  _tag: 'advance',
263
246
  newSyncState: new SyncState({
264
247
  pending: pendingRemaining,
265
248
  upstreamHead: newUpstreamHead,
266
- localHead: pendingRemaining.at(-1)?.seqNum ?? EventSequenceNumber.max(syncState.localHead, newUpstreamHead),
249
+ localHead: pendingRemaining.at(-1)?.seqNum ?? EventSequenceNumber.Client.max(syncState.localHead, newUpstreamHead),
267
250
  }),
268
251
  newEvents,
269
252
  confirmedEvents: pendingMatching,
@@ -275,16 +258,16 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
275
258
  const rebasedPending = rebaseEvents({
276
259
  events: divergentPending,
277
260
  baseEventSequenceNumber: newUpstreamHead,
278
- isClientEvent,
261
+ isClientOnlyEvent: isClientOnlyEvent,
279
262
  });
280
263
  const divergentNewEventsIndex = findDivergencePoint({
281
264
  existingEvents: payload.newEvents,
282
265
  incomingEvents: syncState.pending,
283
266
  isEqualEvent,
284
- isClientEvent,
285
- ignoreClientEvents,
267
+ isClientOnlyEvent: isClientOnlyEvent,
268
+ ignoreClientOnlyEvents: ignoreClientOnlyEvents,
286
269
  });
287
- return validateMergeResult(MergeResultRebase.make({
270
+ return yield* validateMergeResult(MergeResultRebase.make({
288
271
  _tag: 'rebase',
289
272
  newSyncState: new SyncState({
290
273
  pending: rebasedPending,
@@ -297,11 +280,11 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
297
280
  }));
298
281
  }
299
282
  }
300
- // #endregion
283
+ //#endregion upstream-advance
301
284
  // This is the same as what's running in the sync backend
302
285
  case 'local-push': {
303
286
  if (payload.newEvents.length === 0) {
304
- return validateMergeResult(MergeResultAdvance.make({
287
+ return yield* validateMergeResult(MergeResultAdvance.make({
305
288
  _tag: 'advance',
306
289
  newSyncState: syncState,
307
290
  newEvents: [],
@@ -310,25 +293,30 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
310
293
  }));
311
294
  }
312
295
  const newEventsFirst = payload.newEvents.at(0);
313
- const invalidEventSequenceNumber = EventSequenceNumber.isGreaterThan(newEventsFirst.seqNum, syncState.localHead) === false;
314
- if (invalidEventSequenceNumber) {
315
- const expectedMinimumId = EventSequenceNumber.nextPair({
296
+ const invalidEventSequenceNumber = !EventSequenceNumber.Client.isGreaterThan(newEventsFirst.seqNum, syncState.localHead);
297
+ if (invalidEventSequenceNumber === true) {
298
+ const expectedMinimumId = EventSequenceNumber.Client.nextPair({
316
299
  seqNum: syncState.localHead,
317
- isClient: true,
300
+ isClientOnly: true,
318
301
  }).seqNum;
319
- return validateMergeResult(MergeResultReject.make({
302
+ return yield* validateMergeResult(MergeResultReject.make({
320
303
  _tag: 'reject',
321
304
  expectedMinimumId,
322
305
  mergeContext,
323
306
  }));
324
307
  }
325
308
  else {
326
- return validateMergeResult(MergeResultAdvance.make({
309
+ const nonClientOnlyEvents = ignoreClientOnlyEvents === true
310
+ ? payload.newEvents.filter((event) => !isClientOnlyEvent(event))
311
+ : payload.newEvents;
312
+ const newPending = [...syncState.pending, ...nonClientOnlyEvents];
313
+ const newLocalHead = newPending.at(-1)?.seqNum ?? EventSequenceNumber.Client.max(syncState.localHead, syncState.upstreamHead);
314
+ return yield* validateMergeResult(MergeResultAdvance.make({
327
315
  _tag: 'advance',
328
316
  newSyncState: new SyncState({
329
- pending: [...syncState.pending, ...payload.newEvents],
317
+ pending: newPending,
330
318
  upstreamHead: syncState.upstreamHead,
331
- localHead: payload.newEvents.at(-1).seqNum,
319
+ localHead: newLocalHead,
332
320
  }),
333
321
  newEvents: payload.newEvents,
334
322
  confirmedEvents: [],
@@ -336,45 +324,45 @@ export const merge = ({ syncState, payload, isClientEvent, isEqualEvent, ignoreC
336
324
  }));
337
325
  }
338
326
  }
339
- default: {
340
- casesHandled(payload);
341
- }
327
+ default:
328
+ return casesHandled(payload);
342
329
  }
343
- };
330
+ });
344
331
  /**
345
332
  * Gets the index relative to `existingEvents` where the divergence point is
346
333
  * by comparing each event in `existingEvents` to the corresponding event in `incomingEvents`
347
334
  */
348
- export const findDivergencePoint = ({ existingEvents, incomingEvents, isEqualEvent, isClientEvent, ignoreClientEvents, }) => {
349
- if (ignoreClientEvents) {
350
- const filteredExistingEvents = existingEvents.filter((event) => !isClientEvent(event));
351
- const divergencePointWithoutClientEvents = findDivergencePoint({
335
+ export const findDivergencePoint = ({ existingEvents, incomingEvents, isEqualEvent, isClientOnlyEvent, ignoreClientOnlyEvents, }) => {
336
+ if (ignoreClientOnlyEvents === true) {
337
+ const filteredExistingEvents = existingEvents.filter((event) => !isClientOnlyEvent(event));
338
+ const divergencePointWithoutClientOnlyEvents = findDivergencePoint({
352
339
  existingEvents: filteredExistingEvents,
353
340
  incomingEvents,
354
341
  isEqualEvent,
355
- isClientEvent,
356
- ignoreClientEvents: false,
342
+ isClientOnlyEvent,
343
+ ignoreClientOnlyEvents: false,
357
344
  });
358
- if (divergencePointWithoutClientEvents === -1)
345
+ if (divergencePointWithoutClientOnlyEvents === -1)
359
346
  return -1;
360
- const divergencePointEventSequenceNumber = existingEvents[divergencePointWithoutClientEvents].seqNum;
347
+ const divergencePointEventSequenceNumber = existingEvents[divergencePointWithoutClientOnlyEvents].seqNum;
361
348
  // Now find the divergence point in the original array
362
- return existingEvents.findIndex((event) => EventSequenceNumber.isEqual(event.seqNum, divergencePointEventSequenceNumber));
349
+ return existingEvents.findIndex((event) => EventSequenceNumber.Client.isEqual(event.seqNum, divergencePointEventSequenceNumber));
363
350
  }
364
351
  return existingEvents.findIndex((existingEvent, index) => {
365
352
  const incomingEvent = incomingEvents[index];
366
353
  // return !incomingEvent || !isEqualEvent(existingEvent, incomingEvent)
367
- return incomingEvent && !isEqualEvent(existingEvent, incomingEvent);
354
+ return incomingEvent !== undefined && isEqualEvent(existingEvent, incomingEvent) === false;
368
355
  });
369
356
  };
370
- const rebaseEvents = ({ events, baseEventSequenceNumber, isClientEvent, }) => {
357
+ const rebaseEvents = ({ events, baseEventSequenceNumber, isClientOnlyEvent, }) => {
371
358
  let prevEventSequenceNumber = baseEventSequenceNumber;
372
359
  const rebaseGeneration = baseEventSequenceNumber.rebaseGeneration + 1;
373
360
  return events.map((event) => {
374
- const isClient = isClientEvent(event);
361
+ // Rebasing must preserve whether an event is client-only: client-only
362
+ // events become eN.1/eN.2, while synced events become eN+1.
375
363
  const newEvent = event.rebase({
376
364
  parentSeqNum: prevEventSequenceNumber,
377
- isClient,
365
+ isClientOnly: isClientOnlyEvent(event),
378
366
  rebaseGeneration,
379
367
  });
380
368
  prevEventSequenceNumber = newEvent.seqNum;
@@ -389,71 +377,62 @@ const rebaseEvents = ({ events, baseEventSequenceNumber, isClientEvent, }) => {
389
377
  * can process more efficiently which avoids push-threshing
390
378
  */
391
379
  const _flattenMergeResults = (_updateResults) => { };
392
- const validatePayload = (payload) => {
380
+ const validatePayload = (payload) => Effect.gen(function* () {
393
381
  for (let i = 1; i < payload.newEvents.length; i++) {
394
- if (EventSequenceNumber.isGreaterThanOrEqual(payload.newEvents[i - 1].seqNum, payload.newEvents[i].seqNum)) {
395
- return unexpectedError(`Events must be ordered in monotonically ascending order by eventNum. Received: [${payload.newEvents.map((e) => EventSequenceNumber.toString(e.seqNum)).join(', ')}]`);
382
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(payload.newEvents[i - 1].seqNum, payload.newEvents[i].seqNum) === true) {
383
+ return yield* Effect.dieDebugger(`Events must be ordered in monotonically ascending order by eventNum. Received: [${payload.newEvents.map((e) => EventSequenceNumber.Client.toString(e.seqNum)).join(', ')}]`);
396
384
  }
397
385
  }
398
- };
399
- const validateSyncState = (syncState) => {
386
+ });
387
+ const validateSyncState = Effect.fnUntraced(function* (syncState) {
400
388
  for (let i = 0; i < syncState.pending.length; i++) {
401
389
  const event = syncState.pending[i];
402
390
  const nextEvent = syncState.pending[i + 1];
403
391
  if (nextEvent === undefined)
404
392
  break; // Reached end of chain
405
- if (EventSequenceNumber.isGreaterThanOrEqual(event.seqNum, nextEvent.seqNum)) {
406
- shouldNeverHappen(`Events must be ordered in monotonically ascending order by eventNum. Received: [${syncState.pending.map((e) => EventSequenceNumber.toString(e.seqNum)).join(', ')}]`, {
407
- event,
408
- nextEvent,
409
- });
393
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(event.seqNum, nextEvent.seqNum) === true) {
394
+ return yield* Effect.dieDebugger(`Events must be ordered in monotonically ascending order by eventNum. Received: [${syncState.pending.map((e) => EventSequenceNumber.Client.toString(e.seqNum)).join(', ')}]`, { event, nextEvent });
410
395
  }
411
396
  // If the global id has increased, then the client id must be 0
412
397
  const globalIdHasIncreased = nextEvent.seqNum.global > event.seqNum.global;
413
- if (globalIdHasIncreased) {
398
+ if (globalIdHasIncreased === true) {
414
399
  if (nextEvent.seqNum.client !== 0) {
415
- shouldNeverHappen(`New global events must point to clientId 0 in the parentSeqNum. Received: (${EventSequenceNumber.toString(nextEvent.seqNum)})`, syncState.pending, {
416
- event,
417
- nextEvent,
418
- });
400
+ return yield* Effect.dieDebugger(`New global events must point to clientId 0 in the parentSeqNum. Received: (${EventSequenceNumber.Client.toString(nextEvent.seqNum)})`, syncState.pending, { event, nextEvent });
419
401
  }
420
402
  }
421
403
  else {
422
404
  // Otherwise, the parentSeqNum must be the same as the previous event's id
423
- if (EventSequenceNumber.isEqual(nextEvent.parentSeqNum, event.seqNum) === false) {
424
- shouldNeverHappen('Events must be linked in a continuous chain via the parentSeqNum', syncState.pending, {
425
- event,
426
- nextEvent,
427
- });
405
+ if (EventSequenceNumber.Client.isEqual(nextEvent.parentSeqNum, event.seqNum) === false) {
406
+ return yield* Effect.dieDebugger('Events must be linked in a continuous chain via the parentSeqNum', syncState.pending, { event, nextEvent });
428
407
  }
429
408
  }
430
409
  }
431
- };
432
- const validateMergeResult = (mergeResult) => {
433
- if (mergeResult._tag === 'unexpected-error' || mergeResult._tag === 'reject')
410
+ });
411
+ const validateMergeResult = Effect.fnUntraced(function* (mergeResult) {
412
+ if (mergeResult._tag === 'reject')
434
413
  return mergeResult;
435
- validateSyncState(mergeResult.newSyncState);
414
+ yield* validateSyncState(mergeResult.newSyncState);
436
415
  // Ensure local head is always greater than or equal to upstream head
437
- if (EventSequenceNumber.isGreaterThan(mergeResult.newSyncState.upstreamHead, mergeResult.newSyncState.localHead)) {
438
- shouldNeverHappen('Local head must be greater than or equal to upstream head', {
416
+ if (EventSequenceNumber.Client.isGreaterThan(mergeResult.newSyncState.upstreamHead, mergeResult.newSyncState.localHead) === true) {
417
+ return yield* Effect.dieDebugger('Local head must be greater than or equal to upstream head', {
439
418
  localHead: mergeResult.newSyncState.localHead,
440
419
  upstreamHead: mergeResult.newSyncState.upstreamHead,
441
420
  });
442
421
  }
443
422
  // Ensure new local head is greater than or equal to the previous local head
444
- if (EventSequenceNumber.isGreaterThanOrEqual(mergeResult.newSyncState.localHead, mergeResult.mergeContext.syncState.localHead) === false) {
445
- shouldNeverHappen('New local head must be greater than or equal to the previous local head', {
423
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(mergeResult.newSyncState.localHead, mergeResult.mergeContext.syncState.localHead) === false) {
424
+ return yield* Effect.dieDebugger('New local head must be greater than or equal to the previous local head', {
446
425
  localHead: mergeResult.newSyncState.localHead,
447
426
  previousLocalHead: mergeResult.mergeContext.syncState.localHead,
448
427
  });
449
428
  }
450
429
  // Ensure new upstream head is greater than or equal to the previous upstream head
451
- if (EventSequenceNumber.isGreaterThanOrEqual(mergeResult.newSyncState.upstreamHead, mergeResult.mergeContext.syncState.upstreamHead) === false) {
452
- shouldNeverHappen('New upstream head must be greater than or equal to the previous upstream head', {
430
+ if (EventSequenceNumber.Client.isGreaterThanOrEqual(mergeResult.newSyncState.upstreamHead, mergeResult.mergeContext.syncState.upstreamHead) === false) {
431
+ return yield* Effect.dieDebugger('New upstream head must be greater than or equal to the previous upstream head', {
453
432
  upstreamHead: mergeResult.newSyncState.upstreamHead,
454
433
  previousUpstreamHead: mergeResult.mergeContext.syncState.upstreamHead,
455
434
  });
456
435
  }
457
436
  return mergeResult;
458
- };
437
+ });
459
438
  //# sourceMappingURL=syncstate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,KAAK,mBAAmB,MAAM,kCAAkC,CAAA;AACvE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACrD,kFAAkF;IAClF,YAAY,EAAE,mBAAmB,CAAC,mBAAmB;IACrD,qEAAqE;IACrE,SAAS,EAAE,mBAAmB,CAAC,mBAAmB;CACnD,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE,CAAC,CAAC;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5C,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7D,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;KACxD,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;IAChF,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC5D,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CACxD,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;IAClF,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CACxD,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;IACtE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CACxD,CAAC;CAAG;AAEL,MAAM,OAAO,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;CAAG;AAE7G,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;CAAG;AAEnG,uCAAuC;AACvC,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,KAAK,CAAe,cAAc,CAAC,CAAC;IAC3E,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;CACrB,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5C,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzD,CAAC,CAAC,EACH,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzD,CAAC,CAAC,EACH,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACnD,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9D,CAAC,CAAC,EACH,KAAK,CAAC,UAAU,CACjB,CAAA;QACD,OAAO;YACL,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;SACnC,CAAA;IACH,CAAC,CAAA;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAAqB,oBAAoB,CAAC,CAAC;IAC7F,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvD,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC7D,YAAY,EAAE,YAAY;CAC3B,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAChD,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5D,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;SACzC,CAAA;IACH,CAAC,CAAA;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,KAAK,CAAoB,mBAAmB,CAAC,CAAC;IAC1F,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9B,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvD,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC5D,YAAY,EAAE,YAAY;CAC3B,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAChD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1D,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;SACzC,CAAA;IACH,CAAC,CAAA;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,KAAK,CAAoB,mBAAmB,CAAC,CAAC;IAC1F,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9B,mDAAmD;IACnD,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB;IAC1D,YAAY,EAAE,YAAY;CAC3B,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,iBAAiB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACvE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;SACzC,CAAA;IACH,CAAC,CAAA;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,KAAK,CAA6B,4BAA4B,CAAC,CAAC;IACrH,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAC3C,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,CAC3B;CAAG;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAA2E,EAC9C,EAAE,CAC/B,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAC3B,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,kBAA2B;IACjC,SAAS,EAAE,MAAM,CAAC,SAAS;CAC5B,CAAC,CAAC,EACH,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,EAAE,iBAA0B;IAChC,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;CACtC,CAAC,CAAC,EACH,KAAK,CAAC,UAAU,CACjB,CAAA;AAEH,MAAM,eAAe,GAAG,CAAC,OAAe,EAA8B,EAAE;IACtE,IAAI,MAAM,EAAE,CAAC;QACX,iDAAiD;QACjD,QAAQ,CAAA;IACV,CAAC;IAED,OAAO,0BAA0B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;AAC/E,CAAC,CAAA;AAED,6DAA6D;AAC7D;;;;;EAKE;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EACpB,SAAS,EACT,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,GAAG,KAAK,GAQ3B,EAA2B,EAAE;IAC5B,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC5B,eAAe,CAAC,OAAO,CAAC,CAAA;IAExB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;IAE9D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YAExE,uDAAuD;YACvD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,YAAY,CAAA;YAElF,iDAAiD;YACjD,MAAM,cAAc,GAAG,YAAY,CAAC;gBAClC,MAAM,EAAE,SAAS,CAAC,OAAO;gBACzB,uBAAuB,EAAE,eAAe;gBACxC,aAAa;aACd,CAAC,CAAA;YAEF,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,IAAI,SAAS,CAAC;oBAC1B,OAAO,EAAE,cAAc;oBACvB,YAAY,EAAE,eAAe;oBAC7B,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,eAAe;iBAC5D,CAAC;gBACF,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC;gBACpD,cAAc;gBACd,YAAY;aACb,CAAC,CACH,CAAA;QACH,CAAC;QAED,2BAA2B;QAC3B,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,mBAAmB,CACxB,kBAAkB,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,SAAS,EAAE,SAAS,CAAC,SAAS;qBAC/B,CAAC;oBACF,SAAS,EAAE,EAAE;oBACb,eAAe,EAAE,EAAE;oBACnB,YAAY,EAAE,YAAY;iBAC3B,CAAC,CACH,CAAA;YACH,CAAC;YAED,oEAAoE;YACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtG,OAAO,eAAe,CACpB,wEAAwE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3J,CAAA;gBACH,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,IACE,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;gBACvF,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EACjF,CAAC;gBACD,OAAO,eAAe,CACpB,8EAA8E,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrO,CAAA;YACH,CAAC;YAED,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAA;YAExD,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;gBAChD,cAAc,EAAE,SAAS,CAAC,OAAO;gBACjC,cAAc,EAAE,OAAO,CAAC,SAAS;gBACjC,YAAY;gBACZ,aAAa;gBACb,kBAAkB;aACnB,CAAC,CAAA;YAEF,qFAAqF;YACrF,IAAI,qBAAqB,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CACzC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CACtE,CAAA;gBACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CACjF,CAAA;gBAED,4EAA4E;gBAC5E,uDAAuD;gBACvD,yFAAyF;gBACzF,8FAA8F;gBAC9F,0FAA0F;gBAC1F,IAAI,iBAAiB,GAAG,CAAC,CAAA;gBACzB,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,aAAa,CAAC,UAAU,CAClE,SAAS,CAAC,OAAO,EACjB,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;oBACtB,IAAI,kBAAkB,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;wBACtD,iBAAiB,EAAE,CAAA;wBACnB,OAAO,KAAK,CAAA;oBACd,CAAC;oBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,iBAAiB,CAAC,CAAA;oBAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,OAAO,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,CAAA;gBACvD,CAAC,CACF,CAAA;gBAED,OAAO,mBAAmB,CACxB,kBAAkB,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,gBAAgB;wBACzB,YAAY,EAAE,eAAe;wBAC7B,SAAS,EACP,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;qBACnG,CAAC;oBACF,SAAS;oBACT,eAAe,EAAE,eAAe;oBAChC,YAAY,EAAE,YAAY;iBAC3B,CAAC,CACH,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBACvE,MAAM,cAAc,GAAG,YAAY,CAAC;oBAClC,MAAM,EAAE,gBAAgB;oBACxB,uBAAuB,EAAE,eAAe;oBACxC,aAAa;iBACd,CAAC,CAAA;gBAEF,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;oBAClD,cAAc,EAAE,OAAO,CAAC,SAAS;oBACjC,cAAc,EAAE,SAAS,CAAC,OAAO;oBACjC,YAAY;oBACZ,aAAa;oBACb,kBAAkB;iBACnB,CAAC,CAAA;gBAEF,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,IAAI,CAAC;oBACrB,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,cAAc;wBACvB,YAAY,EAAE,eAAe;wBAC7B,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM;qBACzC,CAAC;oBACF,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,GAAG,cAAc,CAAC;oBACnF,cAAc,EAAE,gBAAgB;oBAChC,YAAY;iBACb,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QACD,aAAa;QAEb,yDAAyD;QACzD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,mBAAmB,CACxB,kBAAkB,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,SAAS;oBACvB,SAAS,EAAE,EAAE;oBACb,eAAe,EAAE,EAAE;oBACnB,YAAY,EAAE,YAAY;iBAC3B,CAAC,CACH,CAAA;YACH,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;YAC/C,MAAM,0BAA0B,GAC9B,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,KAAK,CAAA;YAEzF,IAAI,0BAA0B,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,QAAQ,CAAC;oBACrD,MAAM,EAAE,SAAS,CAAC,SAAS;oBAC3B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC,MAAM,CAAA;gBACT,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,IAAI,CAAC;oBACrB,IAAI,EAAE,QAAQ;oBACd,iBAAiB;oBACjB,YAAY;iBACb,CAAC,CACH,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,mBAAmB,CACxB,kBAAkB,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;wBACrD,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM;qBAC5C,CAAC;oBACF,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,eAAe,EAAE,EAAE;oBACnB,YAAY,EAAE,YAAY;iBAC3B,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,YAAY,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,kBAAkB,GAOnB,EAAU,EAAE;IACX,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QACtF,MAAM,kCAAkC,GAAG,mBAAmB,CAAC;YAC7D,cAAc,EAAE,sBAAsB;YACtC,cAAc;YACd,YAAY;YACZ,aAAa;YACb,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAA;QAEF,IAAI,kCAAkC,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAA;QAExD,MAAM,kCAAkC,GAAG,cAAc,CAAC,kCAAkC,CAAE,CAAC,MAAM,CAAA;QACrG,sDAAsD;QACtD,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACxC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAC9E,CAAA;IACH,CAAC;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAC3C,uEAAuE;QACvE,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,EACpB,MAAM,EACN,uBAAuB,EACvB,aAAa,GAKd,EAAiD,EAAE;IAClD,IAAI,uBAAuB,GAAG,uBAAuB,CAAA;IACrD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,gBAAgB,GAAG,CAAC,CAAA;IACrE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,YAAY,EAAE,uBAAuB;YACrC,QAAQ;YACR,gBAAgB;SACjB,CAAC,CAAA;QACF,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAA;QACzC,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,CAAC,cAA0C,EAAE,EAAE,GAAE,CAAC,CAAA;AAE/E,MAAM,eAAe,GAAG,CAAC,OAA4B,EAAE,EAAE;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7G,OAAO,eAAe,CACpB,mFAAmF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtK,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;QACnC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,SAAS,KAAK,SAAS;YAAE,MAAK,CAAC,uBAAuB;QAE1D,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7E,iBAAiB,CACf,mFAAmF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACrK;gBACE,KAAK;gBACL,SAAS;aACV,CACF,CAAA;QACH,CAAC;QAED,+DAA+D;QAC/D,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;QAC1E,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,iBAAiB,CACf,8EAA8E,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAC/H,SAAS,CAAC,OAAO,EACjB;oBACE,KAAK;oBACL,SAAS;iBACV,CACF,CAAA;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,IAAI,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChF,iBAAiB,CAAC,kEAAkE,EAAE,SAAS,CAAC,OAAO,EAAE;oBACvG,KAAK;oBACL,SAAS;iBACV,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,WAAoC,EAAE,EAAE;IACnE,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAA;IAEhG,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAE3C,qEAAqE;IACrE,IAAI,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACjH,iBAAiB,CAAC,2DAA2D,EAAE;YAC7E,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS;YAC7C,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,YAAY;SACpD,CAAC,CAAA;IACJ,CAAC;IAED,4EAA4E;IAC5E,IACE,mBAAmB,CAAC,oBAAoB,CACtC,WAAW,CAAC,YAAY,CAAC,SAAS,EAClC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAC7C,KAAK,KAAK,EACX,CAAC;QACD,iBAAiB,CAAC,yEAAyE,EAAE;YAC3F,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS;YAC7C,iBAAiB,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS;SAChE,CAAC,CAAA;IACJ,CAAC;IAED,kFAAkF;IAClF,IACE,mBAAmB,CAAC,oBAAoB,CACtC,WAAW,CAAC,YAAY,CAAC,YAAY,EACrC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAChD,KAAK,KAAK,EACX,CAAC;QACD,iBAAiB,CAAC,+EAA+E,EAAE;YACjG,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,YAAY;YACnD,oBAAoB,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY;SACtE,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
1
+ {"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"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"}