@livestore/common 0.3.0-dev.3 → 0.3.0-dev.30

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 (426) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +83 -221
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/__tests__/fixture.js +33 -11
  5. package/dist/__tests__/fixture.js.map +1 -1
  6. package/dist/adapter-types.d.ts +128 -68
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +36 -7
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/bounded-collections.d.ts.map +1 -1
  11. package/dist/debug-info.d.ts +1 -1
  12. package/dist/debug-info.d.ts.map +1 -1
  13. package/dist/debug-info.js +1 -0
  14. package/dist/debug-info.js.map +1 -1
  15. package/dist/devtools/devtools-messages-client-session.d.ts +389 -0
  16. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
  17. package/dist/devtools/devtools-messages-client-session.js +96 -0
  18. package/dist/devtools/devtools-messages-client-session.js.map +1 -0
  19. package/dist/devtools/devtools-messages-common.d.ts +68 -0
  20. package/dist/devtools/devtools-messages-common.d.ts.map +1 -0
  21. package/dist/devtools/devtools-messages-common.js +60 -0
  22. package/dist/devtools/devtools-messages-common.js.map +1 -0
  23. package/dist/devtools/devtools-messages-leader.d.ts +394 -0
  24. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -0
  25. package/dist/devtools/devtools-messages-leader.js +147 -0
  26. package/dist/devtools/devtools-messages-leader.js.map +1 -0
  27. package/dist/devtools/devtools-messages.d.ts +3 -592
  28. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  29. package/dist/devtools/devtools-messages.js +3 -171
  30. package/dist/devtools/devtools-messages.js.map +1 -1
  31. package/dist/devtools/devtools-sessioninfo.d.ts +28 -0
  32. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
  33. package/dist/devtools/devtools-sessioninfo.js +34 -0
  34. package/dist/devtools/devtools-sessioninfo.js.map +1 -0
  35. package/dist/devtools/mod.d.ts +39 -0
  36. package/dist/devtools/mod.d.ts.map +1 -0
  37. package/dist/devtools/mod.js +27 -0
  38. package/dist/devtools/mod.js.map +1 -0
  39. package/dist/index.d.ts +4 -11
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +4 -7
  42. package/dist/index.js.map +1 -1
  43. package/dist/leader-thread/LeaderSyncProcessor.d.ts +62 -0
  44. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -0
  45. package/dist/leader-thread/LeaderSyncProcessor.js +589 -0
  46. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
  47. package/dist/leader-thread/apply-event.d.ts +16 -0
  48. package/dist/leader-thread/apply-event.d.ts.map +1 -0
  49. package/dist/leader-thread/apply-event.js +103 -0
  50. package/dist/leader-thread/apply-event.js.map +1 -0
  51. package/dist/leader-thread/connection.d.ts +34 -6
  52. package/dist/leader-thread/connection.d.ts.map +1 -1
  53. package/dist/leader-thread/connection.js +22 -7
  54. package/dist/leader-thread/connection.js.map +1 -1
  55. package/dist/leader-thread/eventlog.d.ts +27 -0
  56. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  57. package/dist/leader-thread/eventlog.js +123 -0
  58. package/dist/leader-thread/eventlog.js.map +1 -0
  59. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  60. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  61. package/dist/leader-thread/leader-worker-devtools.js +154 -132
  62. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  63. package/dist/leader-thread/make-leader-thread-layer.d.ts +26 -12
  64. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  65. package/dist/leader-thread/make-leader-thread-layer.js +82 -47
  66. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  67. package/dist/leader-thread/mod.d.ts +1 -1
  68. package/dist/leader-thread/mod.d.ts.map +1 -1
  69. package/dist/leader-thread/mod.js +1 -1
  70. package/dist/leader-thread/mod.js.map +1 -1
  71. package/dist/leader-thread/recreate-db.d.ts +4 -2
  72. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  73. package/dist/leader-thread/recreate-db.js +35 -25
  74. package/dist/leader-thread/recreate-db.js.map +1 -1
  75. package/dist/leader-thread/shutdown-channel.d.ts +2 -5
  76. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  77. package/dist/leader-thread/shutdown-channel.js +2 -4
  78. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  79. package/dist/leader-thread/types.d.ts +86 -39
  80. package/dist/leader-thread/types.d.ts.map +1 -1
  81. package/dist/leader-thread/types.js +1 -3
  82. package/dist/leader-thread/types.js.map +1 -1
  83. package/dist/materializer-helper.d.ts +23 -0
  84. package/dist/materializer-helper.d.ts.map +1 -0
  85. package/dist/materializer-helper.js +70 -0
  86. package/dist/materializer-helper.js.map +1 -0
  87. package/dist/otel.d.ts +2 -0
  88. package/dist/otel.d.ts.map +1 -1
  89. package/dist/otel.js +5 -0
  90. package/dist/otel.js.map +1 -1
  91. package/dist/query-builder/api.d.ts +158 -55
  92. package/dist/query-builder/api.d.ts.map +1 -1
  93. package/dist/query-builder/api.js +3 -5
  94. package/dist/query-builder/api.js.map +1 -1
  95. package/dist/query-builder/astToSql.d.ts +7 -0
  96. package/dist/query-builder/astToSql.d.ts.map +1 -0
  97. package/dist/query-builder/astToSql.js +190 -0
  98. package/dist/query-builder/astToSql.js.map +1 -0
  99. package/dist/query-builder/impl.d.ts +3 -8
  100. package/dist/query-builder/impl.d.ts.map +1 -1
  101. package/dist/query-builder/impl.js +166 -124
  102. package/dist/query-builder/impl.js.map +1 -1
  103. package/dist/query-builder/impl.test.d.ts +86 -1
  104. package/dist/query-builder/impl.test.d.ts.map +1 -1
  105. package/dist/query-builder/impl.test.js +411 -69
  106. package/dist/query-builder/impl.test.js.map +1 -1
  107. package/dist/query-builder/mod.d.ts +7 -0
  108. package/dist/query-builder/mod.d.ts.map +1 -1
  109. package/dist/query-builder/mod.js +7 -0
  110. package/dist/query-builder/mod.js.map +1 -1
  111. package/dist/rehydrate-from-eventlog.d.ts +14 -0
  112. package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
  113. package/dist/rehydrate-from-eventlog.js +65 -0
  114. package/dist/rehydrate-from-eventlog.js.map +1 -0
  115. package/dist/schema/EventDef.d.ts +136 -0
  116. package/dist/schema/EventDef.d.ts.map +1 -0
  117. package/dist/schema/EventDef.js +58 -0
  118. package/dist/schema/EventDef.js.map +1 -0
  119. package/dist/schema/EventId.d.ts +35 -15
  120. package/dist/schema/EventId.d.ts.map +1 -1
  121. package/dist/schema/EventId.js +57 -11
  122. package/dist/schema/EventId.js.map +1 -1
  123. package/dist/schema/EventId.test.d.ts +2 -0
  124. package/dist/schema/EventId.test.d.ts.map +1 -0
  125. package/dist/schema/EventId.test.js +11 -0
  126. package/dist/schema/EventId.test.js.map +1 -0
  127. package/dist/schema/LiveStoreEvent.d.ts +255 -0
  128. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  129. package/dist/schema/LiveStoreEvent.js +118 -0
  130. package/dist/schema/LiveStoreEvent.js.map +1 -0
  131. package/dist/schema/client-document-def.d.ts +223 -0
  132. package/dist/schema/client-document-def.d.ts.map +1 -0
  133. package/dist/schema/client-document-def.js +170 -0
  134. package/dist/schema/client-document-def.js.map +1 -0
  135. package/dist/schema/client-document-def.test.d.ts +2 -0
  136. package/dist/schema/client-document-def.test.d.ts.map +1 -0
  137. package/dist/schema/client-document-def.test.js +201 -0
  138. package/dist/schema/client-document-def.test.js.map +1 -0
  139. package/dist/schema/db-schema/ast/sqlite.d.ts +69 -0
  140. package/dist/schema/db-schema/ast/sqlite.d.ts.map +1 -0
  141. package/dist/schema/db-schema/ast/sqlite.js +71 -0
  142. package/dist/schema/db-schema/ast/sqlite.js.map +1 -0
  143. package/dist/schema/db-schema/ast/validate.d.ts +3 -0
  144. package/dist/schema/db-schema/ast/validate.d.ts.map +1 -0
  145. package/dist/schema/db-schema/ast/validate.js +12 -0
  146. package/dist/schema/db-schema/ast/validate.js.map +1 -0
  147. package/dist/schema/db-schema/dsl/field-defs.d.ts +90 -0
  148. package/dist/schema/db-schema/dsl/field-defs.d.ts.map +1 -0
  149. package/dist/schema/db-schema/dsl/field-defs.js +87 -0
  150. package/dist/schema/db-schema/dsl/field-defs.js.map +1 -0
  151. package/dist/schema/db-schema/dsl/field-defs.test.d.ts +2 -0
  152. package/dist/schema/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  153. package/dist/schema/db-schema/dsl/field-defs.test.js +29 -0
  154. package/dist/schema/db-schema/dsl/field-defs.test.js.map +1 -0
  155. package/dist/schema/db-schema/dsl/mod.d.ts +90 -0
  156. package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -0
  157. package/dist/schema/db-schema/dsl/mod.js +41 -0
  158. package/dist/schema/db-schema/dsl/mod.js.map +1 -0
  159. package/dist/schema/db-schema/hash.d.ts +2 -0
  160. package/dist/schema/db-schema/hash.d.ts.map +1 -0
  161. package/dist/schema/db-schema/hash.js +14 -0
  162. package/dist/schema/db-schema/hash.js.map +1 -0
  163. package/dist/schema/db-schema/mod.d.ts +3 -0
  164. package/dist/schema/db-schema/mod.d.ts.map +1 -0
  165. package/dist/schema/db-schema/mod.js +3 -0
  166. package/dist/schema/db-schema/mod.js.map +1 -0
  167. package/dist/schema/events.d.ts +2 -0
  168. package/dist/schema/events.d.ts.map +1 -0
  169. package/dist/schema/events.js +2 -0
  170. package/dist/schema/events.js.map +1 -0
  171. package/dist/schema/mod.d.ts +5 -3
  172. package/dist/schema/mod.d.ts.map +1 -1
  173. package/dist/schema/mod.js +5 -3
  174. package/dist/schema/mod.js.map +1 -1
  175. package/dist/schema/schema-helpers.d.ts.map +1 -1
  176. package/dist/schema/schema-helpers.js +1 -1
  177. package/dist/schema/schema-helpers.js.map +1 -1
  178. package/dist/schema/schema.d.ts +30 -23
  179. package/dist/schema/schema.d.ts.map +1 -1
  180. package/dist/schema/schema.js +48 -35
  181. package/dist/schema/schema.js.map +1 -1
  182. package/dist/schema/sqlite-state.d.ts +12 -0
  183. package/dist/schema/sqlite-state.d.ts.map +1 -0
  184. package/dist/schema/sqlite-state.js +36 -0
  185. package/dist/schema/sqlite-state.js.map +1 -0
  186. package/dist/schema/system-tables.d.ts +179 -125
  187. package/dist/schema/system-tables.d.ts.map +1 -1
  188. package/dist/schema/system-tables.js +76 -41
  189. package/dist/schema/system-tables.js.map +1 -1
  190. package/dist/schema/table-def.d.ts +37 -109
  191. package/dist/schema/table-def.d.ts.map +1 -1
  192. package/dist/schema/table-def.js +23 -66
  193. package/dist/schema/table-def.js.map +1 -1
  194. package/dist/schema/view.d.ts +3 -0
  195. package/dist/schema/view.d.ts.map +1 -0
  196. package/dist/schema/view.js +3 -0
  197. package/dist/schema/view.js.map +1 -0
  198. package/dist/schema-management/common.d.ts +7 -7
  199. package/dist/schema-management/common.d.ts.map +1 -1
  200. package/dist/schema-management/common.js.map +1 -1
  201. package/dist/schema-management/migrations.d.ts +6 -6
  202. package/dist/schema-management/migrations.d.ts.map +1 -1
  203. package/dist/schema-management/migrations.js +19 -14
  204. package/dist/schema-management/migrations.js.map +1 -1
  205. package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
  206. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  207. package/dist/schema-management/validate-mutation-defs.js +17 -17
  208. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  209. package/dist/sql-queries/misc.d.ts.map +1 -1
  210. package/dist/sql-queries/sql-queries.d.ts +1 -1
  211. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  212. package/dist/sql-queries/sql-queries.js.map +1 -1
  213. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  214. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  215. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  216. package/dist/sql-queries/types.d.ts +2 -1
  217. package/dist/sql-queries/types.d.ts.map +1 -1
  218. package/dist/sql-queries/types.js.map +1 -1
  219. package/dist/sync/ClientSessionSyncProcessor.d.ts +66 -0
  220. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
  221. package/dist/sync/ClientSessionSyncProcessor.js +209 -0
  222. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
  223. package/dist/sync/index.d.ts +1 -1
  224. package/dist/sync/index.d.ts.map +1 -1
  225. package/dist/sync/index.js +1 -1
  226. package/dist/sync/index.js.map +1 -1
  227. package/dist/sync/next/compact-events.d.ts.map +1 -1
  228. package/dist/sync/next/facts.d.ts +19 -19
  229. package/dist/sync/next/facts.d.ts.map +1 -1
  230. package/dist/sync/next/facts.js +3 -3
  231. package/dist/sync/next/facts.js.map +1 -1
  232. package/dist/sync/next/history-dag-common.d.ts +6 -7
  233. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  234. package/dist/sync/next/history-dag-common.js +4 -2
  235. package/dist/sync/next/history-dag-common.js.map +1 -1
  236. package/dist/sync/next/history-dag.d.ts.map +1 -1
  237. package/dist/sync/next/history-dag.js +2 -2
  238. package/dist/sync/next/history-dag.js.map +1 -1
  239. package/dist/sync/next/rebase-events.d.ts +10 -8
  240. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  241. package/dist/sync/next/rebase-events.js +11 -8
  242. package/dist/sync/next/rebase-events.js.map +1 -1
  243. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  244. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  245. package/dist/sync/next/test/compact-events.test.js +76 -76
  246. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  247. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +29 -29
  248. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  249. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +67 -36
  250. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  251. package/dist/sync/next/test/mod.d.ts +1 -1
  252. package/dist/sync/next/test/mod.d.ts.map +1 -1
  253. package/dist/sync/next/test/mod.js +1 -1
  254. package/dist/sync/next/test/mod.js.map +1 -1
  255. package/dist/sync/sync.d.ts +55 -20
  256. package/dist/sync/sync.d.ts.map +1 -1
  257. package/dist/sync/sync.js +7 -3
  258. package/dist/sync/sync.js.map +1 -1
  259. package/dist/sync/syncstate.d.ts +213 -82
  260. package/dist/sync/syncstate.d.ts.map +1 -1
  261. package/dist/sync/syncstate.js +319 -120
  262. package/dist/sync/syncstate.js.map +1 -1
  263. package/dist/sync/syncstate.test.js +295 -275
  264. package/dist/sync/syncstate.test.js.map +1 -1
  265. package/dist/sync/validate-push-payload.d.ts +2 -2
  266. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  267. package/dist/sync/validate-push-payload.js +2 -2
  268. package/dist/sync/validate-push-payload.js.map +1 -1
  269. package/dist/util.d.ts +2 -2
  270. package/dist/util.d.ts.map +1 -1
  271. package/dist/version.d.ts +1 -1
  272. package/dist/version.d.ts.map +1 -1
  273. package/dist/version.js +1 -1
  274. package/dist/version.js.map +1 -1
  275. package/package.json +6 -6
  276. package/src/__tests__/fixture.ts +36 -15
  277. package/src/adapter-types.ts +111 -74
  278. package/src/debug-info.ts +1 -0
  279. package/src/devtools/devtools-messages-client-session.ts +141 -0
  280. package/src/devtools/devtools-messages-common.ts +115 -0
  281. package/src/devtools/devtools-messages-leader.ts +191 -0
  282. package/src/devtools/devtools-messages.ts +3 -243
  283. package/src/devtools/devtools-sessioninfo.ts +99 -0
  284. package/src/devtools/mod.ts +36 -0
  285. package/src/index.ts +4 -13
  286. package/src/leader-thread/LeaderSyncProcessor.ts +935 -0
  287. package/src/leader-thread/apply-event.ts +173 -0
  288. package/src/leader-thread/connection.ts +54 -9
  289. package/src/leader-thread/eventlog.ts +199 -0
  290. package/src/leader-thread/leader-worker-devtools.ts +212 -189
  291. package/src/leader-thread/make-leader-thread-layer.ts +143 -77
  292. package/src/leader-thread/mod.ts +1 -1
  293. package/src/leader-thread/recreate-db.ts +41 -30
  294. package/src/leader-thread/shutdown-channel.ts +2 -4
  295. package/src/leader-thread/types.ts +95 -51
  296. package/src/materializer-helper.ts +110 -0
  297. package/src/otel.ts +8 -0
  298. package/src/query-builder/api.ts +236 -85
  299. package/src/query-builder/astToSql.ts +232 -0
  300. package/src/query-builder/impl.test.ts +447 -78
  301. package/src/query-builder/impl.ts +209 -144
  302. package/src/query-builder/mod.ts +7 -0
  303. package/src/rehydrate-from-eventlog.ts +114 -0
  304. package/src/schema/EventDef.ts +216 -0
  305. package/src/schema/EventId.test.ts +12 -0
  306. package/src/schema/EventId.ts +75 -15
  307. package/src/schema/LiveStoreEvent.ts +239 -0
  308. package/src/schema/client-document-def.test.ts +239 -0
  309. package/src/schema/client-document-def.ts +444 -0
  310. package/src/schema/db-schema/ast/sqlite.ts +142 -0
  311. package/src/schema/db-schema/ast/validate.ts +13 -0
  312. package/src/schema/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  313. package/src/schema/db-schema/dsl/field-defs.test.ts +35 -0
  314. package/src/schema/db-schema/dsl/field-defs.ts +242 -0
  315. package/src/schema/db-schema/dsl/mod.ts +222 -0
  316. package/src/schema/db-schema/hash.ts +14 -0
  317. package/src/schema/db-schema/mod.ts +2 -0
  318. package/src/schema/events.ts +1 -0
  319. package/src/schema/mod.ts +5 -3
  320. package/src/schema/schema-helpers.ts +1 -1
  321. package/src/schema/schema.ts +84 -62
  322. package/src/schema/sqlite-state.ts +62 -0
  323. package/src/schema/system-tables.ts +68 -50
  324. package/src/schema/table-def.ts +68 -214
  325. package/src/schema/view.ts +2 -0
  326. package/src/schema-management/common.ts +7 -7
  327. package/src/schema-management/migrations.ts +27 -24
  328. package/src/schema-management/validate-mutation-defs.ts +22 -24
  329. package/src/sql-queries/sql-queries.ts +1 -1
  330. package/src/sql-queries/sql-query-builder.ts +1 -2
  331. package/src/sql-queries/types.ts +3 -1
  332. package/src/sync/ClientSessionSyncProcessor.ts +332 -0
  333. package/src/sync/index.ts +1 -1
  334. package/src/sync/next/facts.ts +32 -33
  335. package/src/sync/next/history-dag-common.ts +9 -5
  336. package/src/sync/next/history-dag.ts +2 -2
  337. package/src/sync/next/rebase-events.ts +22 -16
  338. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  339. package/src/sync/next/test/compact-events.test.ts +78 -78
  340. package/src/sync/next/test/event-fixtures.ts +219 -0
  341. package/src/sync/next/test/mod.ts +1 -1
  342. package/src/sync/sync.ts +51 -19
  343. package/src/sync/syncstate.test.ts +335 -308
  344. package/src/sync/syncstate.ts +394 -212
  345. package/src/sync/validate-push-payload.ts +7 -4
  346. package/src/version.ts +1 -1
  347. package/tmp/pack.tgz +0 -0
  348. package/tsconfig.json +2 -1
  349. package/dist/derived-mutations.d.ts +0 -109
  350. package/dist/derived-mutations.d.ts.map +0 -1
  351. package/dist/derived-mutations.js +0 -54
  352. package/dist/derived-mutations.js.map +0 -1
  353. package/dist/derived-mutations.test.d.ts +0 -2
  354. package/dist/derived-mutations.test.d.ts.map +0 -1
  355. package/dist/derived-mutations.test.js +0 -93
  356. package/dist/derived-mutations.test.js.map +0 -1
  357. package/dist/devtools/devtools-bridge.d.ts +0 -12
  358. package/dist/devtools/devtools-bridge.d.ts.map +0 -1
  359. package/dist/devtools/devtools-bridge.js +0 -2
  360. package/dist/devtools/devtools-bridge.js.map +0 -1
  361. package/dist/devtools/index.d.ts +0 -42
  362. package/dist/devtools/index.d.ts.map +0 -1
  363. package/dist/devtools/index.js +0 -48
  364. package/dist/devtools/index.js.map +0 -1
  365. package/dist/init-singleton-tables.d.ts +0 -4
  366. package/dist/init-singleton-tables.d.ts.map +0 -1
  367. package/dist/init-singleton-tables.js +0 -16
  368. package/dist/init-singleton-tables.js.map +0 -1
  369. package/dist/leader-thread/apply-mutation.d.ts +0 -8
  370. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  371. package/dist/leader-thread/apply-mutation.js +0 -95
  372. package/dist/leader-thread/apply-mutation.js.map +0 -1
  373. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  374. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  375. package/dist/leader-thread/leader-sync-processor.js +0 -422
  376. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  377. package/dist/leader-thread/mutationlog.d.ts +0 -23
  378. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  379. package/dist/leader-thread/mutationlog.js +0 -27
  380. package/dist/leader-thread/mutationlog.js.map +0 -1
  381. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  382. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  383. package/dist/leader-thread/pull-queue-set.js +0 -39
  384. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  385. package/dist/mutation.d.ts +0 -13
  386. package/dist/mutation.d.ts.map +0 -1
  387. package/dist/mutation.js +0 -57
  388. package/dist/mutation.js.map +0 -1
  389. package/dist/query-info.d.ts +0 -38
  390. package/dist/query-info.d.ts.map +0 -1
  391. package/dist/query-info.js +0 -7
  392. package/dist/query-info.js.map +0 -1
  393. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  394. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  395. package/dist/rehydrate-from-mutationlog.js +0 -72
  396. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  397. package/dist/schema/MutationEvent.d.ts +0 -191
  398. package/dist/schema/MutationEvent.d.ts.map +0 -1
  399. package/dist/schema/MutationEvent.js +0 -56
  400. package/dist/schema/MutationEvent.js.map +0 -1
  401. package/dist/schema/mutations.d.ts +0 -107
  402. package/dist/schema/mutations.d.ts.map +0 -1
  403. package/dist/schema/mutations.js +0 -42
  404. package/dist/schema/mutations.js.map +0 -1
  405. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  406. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  407. package/dist/sync/client-session-sync-processor.js +0 -131
  408. package/dist/sync/client-session-sync-processor.js.map +0 -1
  409. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  410. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  411. package/src/derived-mutations.test.ts +0 -101
  412. package/src/derived-mutations.ts +0 -166
  413. package/src/devtools/devtools-bridge.ts +0 -13
  414. package/src/devtools/index.ts +0 -48
  415. package/src/init-singleton-tables.ts +0 -24
  416. package/src/leader-thread/apply-mutation.ts +0 -143
  417. package/src/leader-thread/leader-sync-processor.ts +0 -666
  418. package/src/leader-thread/mutationlog.ts +0 -42
  419. package/src/leader-thread/pull-queue-set.ts +0 -58
  420. package/src/mutation.ts +0 -81
  421. package/src/query-info.ts +0 -78
  422. package/src/rehydrate-from-mutationlog.ts +0 -127
  423. package/src/schema/MutationEvent.ts +0 -161
  424. package/src/schema/mutations.ts +0 -192
  425. package/src/sync/client-session-sync-processor.ts +0 -207
  426. package/src/sync/next/test/mutation-fixtures.ts +0 -231
@@ -1,20 +1,20 @@
1
1
  import { notYetImplemented } from '@livestore/utils'
2
2
 
3
- import type * as EventId from '../../schema/EventId.js'
4
3
  import type {
4
+ EventDefFactInput,
5
+ EventDefFacts,
6
+ EventDefFactsGroup,
7
+ EventDefFactsSnapshot,
5
8
  FactsCallback,
6
- MutationEventFactInput,
7
- MutationEventFacts,
8
- MutationEventFactsGroup,
9
- MutationEventFactsSnapshot,
10
- } from '../../schema/mutations.js'
9
+ } from '../../schema/EventDef.js'
10
+ import type * as EventId from '../../schema/EventId.js'
11
11
  import { graphologyDag } from './graphology_.js'
12
12
  import { EMPTY_FACT_VALUE, type HistoryDag, type HistoryDagNode } from './history-dag-common.js'
13
13
 
14
14
  export const factsSnapshotForEvents = (
15
15
  events: HistoryDagNode[],
16
16
  endEventId: EventId.EventId,
17
- ): MutationEventFactsSnapshot => {
17
+ ): EventDefFactsSnapshot => {
18
18
  const facts = new Map<string, any>()
19
19
 
20
20
  for (const event of events) {
@@ -31,7 +31,7 @@ export const factsSnapshotForEvents = (
31
31
  export const factsSnapshotForDag = (
32
32
  dag: HistoryDag,
33
33
  endEventId: EventId.EventId | undefined,
34
- ): MutationEventFactsSnapshot => {
34
+ ): EventDefFactsSnapshot => {
35
35
  const facts = new Map<string, any>()
36
36
 
37
37
  const orderedEventIdStrs = graphologyDag.topologicalSort(dag)
@@ -56,20 +56,20 @@ export type FactValidationResult =
56
56
  success: false
57
57
  /** Index of the item that caused the validation to fail */
58
58
  index: number
59
- requiredFacts: MutationEventFacts
59
+ requiredFacts: EventDefFacts
60
60
  mismatch: {
61
- existing: MutationEventFacts
62
- required: MutationEventFacts
61
+ existing: EventDefFacts
62
+ required: EventDefFacts
63
63
  }
64
- currentSnapshot: MutationEventFacts
64
+ currentSnapshot: EventDefFacts
65
65
  }
66
66
 
67
67
  export const validateFacts = ({
68
68
  factGroups,
69
69
  initialSnapshot,
70
70
  }: {
71
- factGroups: MutationEventFactsGroup[]
72
- initialSnapshot: MutationEventFactsSnapshot
71
+ factGroups: EventDefFactsGroup[]
72
+ initialSnapshot: EventDefFactsSnapshot
73
73
  }): FactValidationResult => {
74
74
  const currentSnapshot = new Map(initialSnapshot)
75
75
 
@@ -102,13 +102,13 @@ export const validateFacts = ({
102
102
  }
103
103
  }
104
104
 
105
- export const applyFactGroups = (factGroups: MutationEventFactsGroup[], snapshot: MutationEventFactsSnapshot) => {
105
+ export const applyFactGroups = (factGroups: EventDefFactsGroup[], snapshot: EventDefFactsSnapshot) => {
106
106
  for (const factGroup of factGroups) {
107
107
  applyFactGroup(factGroup, snapshot)
108
108
  }
109
109
  }
110
110
 
111
- export const applyFactGroup = (factGroup: MutationEventFactsGroup, snapshot: MutationEventFactsSnapshot) => {
111
+ export const applyFactGroup = (factGroup: EventDefFactsGroup, snapshot: EventDefFactsSnapshot) => {
112
112
  for (const [key, value] of factGroup.modifySet) {
113
113
  snapshot.set(key, value)
114
114
  }
@@ -119,7 +119,7 @@ export const applyFactGroup = (factGroup: MutationEventFactsGroup, snapshot: Mut
119
119
  }
120
120
 
121
121
  /** Check if setA is a subset of setB */
122
- const isSubSetMapByValue = (setA: MutationEventFacts, setB: MutationEventFacts) => {
122
+ const isSubSetMapByValue = (setA: EventDefFacts, setB: EventDefFacts) => {
123
123
  for (const [key, value] of setA) {
124
124
  if (setB.get(key) !== value) {
125
125
  return false
@@ -129,7 +129,7 @@ const isSubSetMapByValue = (setA: MutationEventFacts, setB: MutationEventFacts)
129
129
  }
130
130
 
131
131
  /** Check if setA is a subset of setB */
132
- const isSubSetMapByKey = (setA: MutationEventFacts, setB: MutationEventFacts) => {
132
+ const isSubSetMapByKey = (setA: EventDefFacts, setB: EventDefFacts) => {
133
133
  for (const [key, _value] of setA) {
134
134
  if (!setB.has(key)) {
135
135
  return false
@@ -139,17 +139,16 @@ const isSubSetMapByKey = (setA: MutationEventFacts, setB: MutationEventFacts) =>
139
139
  }
140
140
 
141
141
  /** Check if groupA depends on groupB */
142
- export const dependsOn = (groupA: MutationEventFactsGroup, groupB: MutationEventFactsGroup): boolean =>
142
+ export const dependsOn = (groupA: EventDefFactsGroup, groupB: EventDefFactsGroup): boolean =>
143
143
  factsIntersect(groupA.depRead, groupB.modifySet) ||
144
144
  factsIntersect(groupA.depRead, groupB.modifyUnset) ||
145
145
  factsIntersect(groupA.depRequire, groupB.modifySet) ||
146
146
  factsIntersect(groupA.depRequire, groupB.modifyUnset)
147
147
 
148
- export const replacesFacts = (groupA: MutationEventFactsGroup, groupB: MutationEventFactsGroup): boolean => {
149
- const replaces = (a: MutationEventFacts, b: MutationEventFacts) => a.size > 0 && b.size > 0 && isSameMapByKey(a, b)
148
+ export const replacesFacts = (groupA: EventDefFactsGroup, groupB: EventDefFactsGroup): boolean => {
149
+ const replaces = (a: EventDefFacts, b: EventDefFacts) => a.size > 0 && b.size > 0 && isSameMapByKey(a, b)
150
150
 
151
- const noFactsOrSame = (a: MutationEventFacts, b: MutationEventFacts) =>
152
- a.size === 0 || b.size === 0 || isSameMapByKey(a, b)
151
+ const noFactsOrSame = (a: EventDefFacts, b: EventDefFacts) => a.size === 0 || b.size === 0 || isSameMapByKey(a, b)
153
152
 
154
153
  return (
155
154
  (replaces(groupA.modifySet, groupB.modifySet) && noFactsOrSame(groupA.modifyUnset, groupB.modifyUnset)) ||
@@ -159,16 +158,16 @@ export const replacesFacts = (groupA: MutationEventFactsGroup, groupB: MutationE
159
158
  )
160
159
  }
161
160
 
162
- export const isSameMapByKey = (set: MutationEventFacts, otherSet: MutationEventFacts) =>
161
+ export const isSameMapByKey = (set: EventDefFacts, otherSet: EventDefFacts) =>
163
162
  set.size === otherSet.size && isSubSetMapByKey(set, otherSet)
164
163
 
165
- export const factsToString = (facts: MutationEventFacts) => {
164
+ export const factsToString = (facts: EventDefFacts) => {
166
165
  return Array.from(facts)
167
166
  .map(([key, value]) => (value === EMPTY_FACT_VALUE ? key : `${key}=${value}`))
168
167
  .join(', ')
169
168
  }
170
169
 
171
- export const factsIntersect = (setA: MutationEventFacts, setB: MutationEventFacts): boolean => {
170
+ export const factsIntersect = (setA: EventDefFacts, setB: EventDefFacts): boolean => {
172
171
  for (const [key, _value] of setA) {
173
172
  if (setB.has(key)) {
174
173
  return true
@@ -177,16 +176,16 @@ export const factsIntersect = (setA: MutationEventFacts, setB: MutationEventFact
177
176
  return false
178
177
  }
179
178
 
180
- export const getFactsGroupForMutationArgs = ({
179
+ export const getFactsGroupForEventArgs = ({
181
180
  factsCallback,
182
181
  args,
183
182
  currentFacts,
184
183
  }: {
185
184
  factsCallback: FactsCallback<any> | undefined
186
185
  args: any
187
- currentFacts: MutationEventFactsSnapshot
188
- }): MutationEventFactsGroup => {
189
- const depRead: MutationEventFactsSnapshot = new Map<string, any>()
186
+ currentFacts: EventDefFactsSnapshot
187
+ }): EventDefFactsGroup => {
188
+ const depRead: EventDefFactsSnapshot = new Map<string, any>()
190
189
  const factsSnapshotProxy = new Proxy(currentFacts, {
191
190
  get: (target, prop) => {
192
191
  if (prop === 'has') {
@@ -201,12 +200,12 @@ export const getFactsGroupForMutationArgs = ({
201
200
  }
202
201
  }
203
202
 
204
- notYetImplemented(`getFactsGroupForMutationArgs: ${prop.toString()} is not yet implemented`)
203
+ notYetImplemented(`getFactsGroupForEventArgs: ${prop.toString()} is not yet implemented`)
205
204
  },
206
205
  })
207
206
 
208
207
  const factsRes = factsCallback?.(args, factsSnapshotProxy)
209
- const iterableToMap = (iterable: Iterable<MutationEventFactInput>) => {
208
+ const iterableToMap = (iterable: Iterable<EventDefFactInput>) => {
210
209
  const map = new Map()
211
210
  for (const item of iterable) {
212
211
  if (typeof item === 'string') {
@@ -231,5 +230,5 @@ export const compareEventIds = (a: EventId.EventId, b: EventId.EventId) => {
231
230
  if (a.global !== b.global) {
232
231
  return a.global - b.global
233
232
  }
234
- return a.local - b.local
233
+ return a.client - b.client
235
234
  }
@@ -1,5 +1,5 @@
1
+ import type { EventDefFactsGroup } from '../../schema/EventDef.js'
1
2
  import * as EventId from '../../schema/EventId.js'
2
- import type { MutationEventFactsGroup } from '../../schema/mutations.js'
3
3
  import { graphology } from './graphology_.js'
4
4
 
5
5
  export const connectionTypeOptions = ['parent', 'facts'] as const
@@ -20,25 +20,29 @@ export const emptyHistoryDag = (): HistoryDag =>
20
20
  })
21
21
 
22
22
  // TODO consider making `ROOT_ID` parent to itself
23
- export const rootParentId = { global: EventId.ROOT.global - 1, local: 0 } satisfies EventId.EventId
23
+ export const rootParentId = EventId.make({ global: EventId.ROOT.global - 1, client: EventId.clientDefault })
24
24
 
25
25
  export type HistoryDagNode = {
26
26
  id: EventId.EventId
27
27
  parentId: EventId.EventId
28
- mutation: string
28
+ name: string
29
29
  args: any
30
30
  /** Facts are being used for conflict detection and history compaction */
31
- factsGroup: MutationEventFactsGroup
31
+ factsGroup: EventDefFactsGroup
32
32
  meta?: any
33
+ clientId: string
34
+ sessionId: string | undefined
33
35
  }
34
36
 
35
37
  export const rootEventNode: HistoryDagNode = {
36
38
  id: EventId.ROOT,
37
39
  parentId: rootParentId,
38
40
  // unused below
39
- mutation: '__Root__',
41
+ name: '__Root__',
40
42
  args: {},
41
43
  factsGroup: { modifySet: new Map(), modifyUnset: new Map(), depRequire: new Map(), depRead: new Map() },
44
+ clientId: 'root',
45
+ sessionId: undefined,
42
46
  }
43
47
 
44
48
  export const EMPTY_FACT_VALUE = Symbol('EMPTY_FACT_VALUE')
@@ -3,7 +3,7 @@ import { factsToString, validateFacts } from './facts.js'
3
3
  import { emptyHistoryDag, type HistoryDagNode, rootParentId } from './history-dag-common.js'
4
4
 
5
5
  export const eventIdToString = (eventId: EventId.EventId) =>
6
- eventId.local === 0 ? eventId.global.toString() : `${eventId.global}.${eventId.local}`
6
+ eventId.client === 0 ? eventId.global.toString() : `${eventId.global}.${eventId.client}`
7
7
 
8
8
  export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skipFactsCheck: boolean }) => {
9
9
  if (options?.skipFactsCheck !== true) {
@@ -14,7 +14,7 @@ export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skip
14
14
 
15
15
  if (validationResult.success === false) {
16
16
  throw new Error(
17
- `Mutation ${dagNodes[validationResult.index]!.mutation} requires facts that have not been set yet.\nRequires: ${factsToString(validationResult.requiredFacts)}\nFacts Snapshot: ${factsToString(validationResult.currentSnapshot)}`,
17
+ `Event ${dagNodes[validationResult.index]!.name} requires facts that have not been set yet.\nRequires: ${factsToString(validationResult.requiredFacts)}\nFacts Snapshot: ${factsToString(validationResult.currentSnapshot)}`,
18
18
  )
19
19
  }
20
20
  }
@@ -1,11 +1,11 @@
1
- import type * as EventId from '../../schema/EventId.js'
2
- import type * as MutationEvent from '../../schema/MutationEvent.js'
3
- import type { MutationDef, MutationEventFactsSnapshot } from '../../schema/mutations.js'
1
+ import type { EventDef, EventDefFactsSnapshot } from '../../schema/EventDef.js'
2
+ import * as EventId from '../../schema/EventId.js'
3
+ import type * as LiveStoreEvent from '../../schema/LiveStoreEvent.js'
4
4
  import {
5
5
  applyFactGroups,
6
6
  factsIntersect,
7
7
  type FactValidationResult,
8
- getFactsGroupForMutationArgs,
8
+ getFactsGroupForEventArgs,
9
9
  validateFacts,
10
10
  } from './facts.js'
11
11
  import type { HistoryDagNode } from './history-dag-common.js'
@@ -19,13 +19,13 @@ export type RebaseInput = {
19
19
  newRemoteEvents: RebaseEventWithConflict[]
20
20
  pendingLocalEvents: RebaseEventWithConflict[]
21
21
  validate: (args: {
22
- rebasedLocalEvents: MutationEvent.PartialAny[]
23
- mutationDefs: Record<string, MutationDef.Any>
22
+ rebasedLocalEvents: LiveStoreEvent.PartialAnyDecoded[]
23
+ eventDefs: Record<string, EventDef.Any>
24
24
  }) => FactValidationResult
25
25
  }
26
26
 
27
27
  export type RebaseOutput = {
28
- rebasedLocalEvents: MutationEvent.PartialAny[]
28
+ rebasedLocalEvents: LiveStoreEvent.PartialAnyDecoded[]
29
29
  }
30
30
 
31
31
  export type RebaseFn = (input: RebaseInput) => RebaseOutput
@@ -43,12 +43,16 @@ export const rebaseEvents = ({
43
43
  pendingLocalEvents,
44
44
  newRemoteEvents,
45
45
  currentFactsSnapshot,
46
+ clientId,
47
+ sessionId,
46
48
  }: {
47
49
  pendingLocalEvents: HistoryDagNode[]
48
50
  newRemoteEvents: HistoryDagNode[]
49
51
  rebaseFn: RebaseFn
50
- currentFactsSnapshot: MutationEventFactsSnapshot
51
- }): MutationEvent.Any[] => {
52
+ currentFactsSnapshot: EventDefFactsSnapshot
53
+ clientId: string
54
+ sessionId: string
55
+ }): ReadonlyArray<LiveStoreEvent.AnyDecoded> => {
52
56
  const initialSnapshot = new Map(currentFactsSnapshot)
53
57
  applyFactGroups(
54
58
  newRemoteEvents.map((event) => event.factsGroup),
@@ -72,11 +76,11 @@ export const rebaseEvents = ({
72
76
  factsIntersect(pending.factsGroup.modifySet, remote.factsGroup.modifySet),
73
77
  ),
74
78
  })),
75
- validate: ({ rebasedLocalEvents, mutationDefs }) =>
79
+ validate: ({ rebasedLocalEvents, eventDefs }) =>
76
80
  validateFacts({
77
81
  factGroups: rebasedLocalEvents.map((event) =>
78
- getFactsGroupForMutationArgs({
79
- factsCallback: mutationDefs[event.mutation]!.options.facts,
82
+ getFactsGroupForEventArgs({
83
+ factsCallback: eventDefs[event.name]!.options.facts,
80
84
  args: event.args,
81
85
  currentFacts: new Map(),
82
86
  }),
@@ -89,10 +93,12 @@ export const rebaseEvents = ({
89
93
  return rebasedLocalEvents.map(
90
94
  (event, index) =>
91
95
  ({
92
- id: { global: headGlobalId + index + 1, local: 0 } satisfies EventId.EventId,
93
- parentId: { global: headGlobalId + index, local: 0 } satisfies EventId.EventId,
94
- mutation: event.mutation,
96
+ id: EventId.make({ global: headGlobalId + index + 1, client: EventId.clientDefault }),
97
+ parentId: EventId.make({ global: headGlobalId + index, client: EventId.clientDefault }),
98
+ name: event.name,
95
99
  args: event.args,
96
- }) satisfies MutationEvent.Any,
100
+ clientId,
101
+ sessionId,
102
+ }) satisfies LiveStoreEvent.AnyDecoded,
97
103
  )
98
104
  }
@@ -1,16 +1,16 @@
1
- import { defineMutation } from '@livestore/common/schema'
1
+ import { defineEvent } from '@livestore/common/schema'
2
2
  import { Schema } from '@livestore/utils/effect'
3
3
  import { describe, expect, it } from 'vitest'
4
4
 
5
5
  import { compactEvents } from '../compact-events.js'
6
6
  import { historyDagFromNodes } from '../history-dag.js'
7
7
  import { customSerializer } from './compact-events.test.js'
8
- import { toEventNodes } from './mutation-fixtures.js'
8
+ import { toEventNodes } from './event-fixtures.js'
9
9
 
10
10
  expect.addSnapshotSerializer(customSerializer)
11
11
 
12
12
  const compact = (events: any[]) => {
13
- const dag = historyDagFromNodes(toEventNodes(events, mutations))
13
+ const dag = historyDagFromNodes(toEventNodes(events, eventDefs, 'client-id', 'session-id'))
14
14
  const compacted = compactEvents(dag)
15
15
 
16
16
  return Array.from(compacted.dag.nodeEntries())
@@ -23,98 +23,98 @@ const facts = {
23
23
  multiplyByZero: `multiplyByZero`,
24
24
  }
25
25
 
26
- const mutations = {
27
- add: defineMutation('add', Schema.Struct({ value: Schema.Number }), 'UPDATE values SET value = value + $value', {}),
28
- multiply: defineMutation(
29
- 'multiply',
30
- Schema.Struct({ value: Schema.Number }),
31
- 'UPDATE values SET value = value * $value',
32
- {
33
- facts: ({ value }, currentFacts) => ({
34
- modify: {
35
- set: value === 0 || currentFacts.has(facts.multiplyByZero) ? [facts.multiplyByZero] : [],
36
- unset: value === 0 ? [] : [facts.multiplyByZero],
37
- },
38
- }),
39
- },
40
- ),
26
+ const eventDefs = {
27
+ add: defineEvent({
28
+ name: 'add',
29
+ schema: Schema.Struct({ value: Schema.Number }),
30
+ }),
31
+ multiply: defineEvent({
32
+ name: 'multiply',
33
+ schema: Schema.Struct({ value: Schema.Number }),
34
+ facts: ({ value }, currentFacts) => ({
35
+ modify: {
36
+ set: value === 0 || currentFacts.has(facts.multiplyByZero) ? [facts.multiplyByZero] : [],
37
+ unset: value === 0 ? [] : [facts.multiplyByZero],
38
+ },
39
+ }),
40
+ }),
41
41
  // TODO divide by zero
42
42
  }
43
43
 
44
44
  describe('compactEvents calculator', () => {
45
45
  it('1 + 1', () => {
46
46
  const expected = compact([
47
- mutations.add({ value: 1 }), // 0
48
- mutations.add({ value: 1 }), // 1
47
+ eventDefs.add({ value: 1 }), // 0
48
+ eventDefs.add({ value: 1 }), // 1
49
49
  ])
50
50
 
51
51
  expect(expected).toMatchInlineSnapshot(`
52
52
  [
53
- { id: 0, parentId: -1, mutation: "add", args: { value: 1 }, facts: "" }
54
- { id: 1, parentId: 0, mutation: "add", args: { value: 1 }, facts: "" }
53
+ { id: 1, parentId: 0, name: "add", args: { value: 1 }, clientId: "client-id", sessionId: "session-id", facts: "" }
54
+ { id: 2, parentId: 1, name: "add", args: { value: 1 }, clientId: "client-id", sessionId: "session-id", facts: "" }
55
55
  ]
56
56
  `)
57
57
  })
58
58
 
59
59
  it('2 * 2', () => {
60
60
  const expected = compact([
61
- mutations.multiply({ value: 2 }), // 0
62
- mutations.multiply({ value: 2 }), // 1
61
+ eventDefs.multiply({ value: 2 }), // 0
62
+ eventDefs.multiply({ value: 2 }), // 1
63
63
  ])
64
64
 
65
65
  expect(expected).toMatchInlineSnapshot(`
66
66
  [
67
- { id: 0, parentId: -1, mutation: "multiply", args: { value: 2 }, facts: "?multiplyByZero -multiplyByZero" }
68
- { id: 1, parentId: 0, mutation: "multiply", args: { value: 2 }, facts: "?multiplyByZero -multiplyByZero" }
67
+ { id: 1, parentId: 0, name: "multiply", args: { value: 2 }, clientId: "client-id", sessionId: "session-id", facts: "?multiplyByZero -multiplyByZero" }
68
+ { id: 2, parentId: 1, name: "multiply", args: { value: 2 }, clientId: "client-id", sessionId: "session-id", facts: "?multiplyByZero -multiplyByZero" }
69
69
  ]
70
70
  `)
71
71
  })
72
72
 
73
73
  it('2 * 2 * 0', () => {
74
74
  const expected = compact([
75
- mutations.multiply({ value: 2 }), // 0
76
- mutations.multiply({ value: 2 }), // 1
77
- mutations.multiply({ value: 0 }), // 2
75
+ eventDefs.multiply({ value: 2 }), // 0
76
+ eventDefs.multiply({ value: 2 }), // 1
77
+ eventDefs.multiply({ value: 0 }), // 2
78
78
  ])
79
79
 
80
80
  expect(expected).toMatchInlineSnapshot(`
81
81
  [
82
- { id: 2, parentId: -1, mutation: "multiply", args: { value: 0 }, facts: "+multiplyByZero" }
82
+ { id: 3, parentId: 0, name: "multiply", args: { value: 0 }, clientId: "client-id", sessionId: "session-id", facts: "+multiplyByZero" }
83
83
  ]
84
84
  `)
85
85
  })
86
86
 
87
87
  it('2 * 2 * 0 + 1', () => {
88
88
  const expected = compact([
89
- mutations.multiply({ value: 2 }), // 0
90
- mutations.multiply({ value: 2 }), // 1
91
- mutations.multiply({ value: 0 }), // 2
92
- mutations.add({ value: 1 }), // 3
89
+ eventDefs.multiply({ value: 2 }), // 0
90
+ eventDefs.multiply({ value: 2 }), // 1
91
+ eventDefs.multiply({ value: 0 }), // 2
92
+ eventDefs.add({ value: 1 }), // 3
93
93
  ])
94
94
 
95
95
  expect(expected).toMatchInlineSnapshot(`
96
96
  [
97
- { id: 2, parentId: -1, mutation: "multiply", args: { value: 0 }, facts: "+multiplyByZero" }
98
- { id: 3, parentId: 2, mutation: "add", args: { value: 1 }, facts: "" }
97
+ { id: 3, parentId: 0, name: "multiply", args: { value: 0 }, clientId: "client-id", sessionId: "session-id", facts: "+multiplyByZero" }
98
+ { id: 4, parentId: 3, name: "add", args: { value: 1 }, clientId: "client-id", sessionId: "session-id", facts: "" }
99
99
  ]
100
100
  `)
101
101
  })
102
102
 
103
103
  it('1 + 2 * 0 * 2 + 1', () => {
104
104
  const expected = compact([
105
- mutations.add({ value: 1 }), // 0
106
- mutations.multiply({ value: 2 }), // 1
107
- mutations.multiply({ value: 0 }), // 2
108
- mutations.multiply({ value: 2 }), // 3
109
- mutations.add({ value: 1 }), // 4
105
+ eventDefs.add({ value: 1 }), // 0
106
+ eventDefs.multiply({ value: 2 }), // 1
107
+ eventDefs.multiply({ value: 0 }), // 2
108
+ eventDefs.multiply({ value: 2 }), // 3
109
+ eventDefs.add({ value: 1 }), // 4
110
110
  ])
111
111
 
112
112
  expect(expected).toMatchInlineSnapshot(`
113
113
  [
114
- { id: 0, parentId: -1, mutation: "add", args: { value: 1 }, facts: "" }
115
- { id: 2, parentId: 0, mutation: "multiply", args: { value: 0 }, facts: "+multiplyByZero" }
116
- { id: 3, parentId: 2, mutation: "multiply", args: { value: 2 }, facts: "?multiplyByZero +multiplyByZero -multiplyByZero" }
117
- { id: 4, parentId: 3, mutation: "add", args: { value: 1 }, facts: "" }
114
+ { id: 1, parentId: 0, name: "add", args: { value: 1 }, clientId: "client-id", sessionId: "session-id", facts: "" }
115
+ { id: 3, parentId: 1, name: "multiply", args: { value: 0 }, clientId: "client-id", sessionId: "session-id", facts: "+multiplyByZero" }
116
+ { id: 4, parentId: 3, name: "multiply", args: { value: 2 }, clientId: "client-id", sessionId: "session-id", facts: "?multiplyByZero +multiplyByZero -multiplyByZero" }
117
+ { id: 5, parentId: 4, name: "add", args: { value: 1 }, clientId: "client-id", sessionId: "session-id", facts: "" }
118
118
  ]
119
119
  `)
120
120
  })