@livestore/common 0.3.0-dev.4 → 0.3.0-dev.40

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 (470) 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 +132 -75
  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 +390 -0
  16. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
  17. package/dist/devtools/devtools-messages-client-session.js +97 -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 +32 -0
  32. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
  33. package/dist/devtools/devtools-sessioninfo.js +36 -0
  34. package/dist/devtools/devtools-sessioninfo.js.map +1 -0
  35. package/dist/devtools/mod.d.ts +55 -0
  36. package/dist/devtools/mod.d.ts.map +1 -0
  37. package/dist/devtools/mod.js +33 -0
  38. package/dist/devtools/mod.js.map +1 -0
  39. package/dist/index.d.ts +7 -13
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +7 -9
  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 +593 -0
  46. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
  47. package/dist/leader-thread/connection.d.ts +34 -6
  48. package/dist/leader-thread/connection.d.ts.map +1 -1
  49. package/dist/leader-thread/connection.js +22 -7
  50. package/dist/leader-thread/connection.js.map +1 -1
  51. package/dist/leader-thread/eventlog.d.ts +27 -0
  52. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  53. package/dist/leader-thread/eventlog.js +119 -0
  54. package/dist/leader-thread/eventlog.js.map +1 -0
  55. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  56. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  57. package/dist/leader-thread/leader-worker-devtools.js +165 -134
  58. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  59. package/dist/leader-thread/make-leader-thread-layer.d.ts +26 -12
  60. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  61. package/dist/leader-thread/make-leader-thread-layer.js +76 -48
  62. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  63. package/dist/leader-thread/materialize-event.d.ts +16 -0
  64. package/dist/leader-thread/materialize-event.d.ts.map +1 -0
  65. package/dist/leader-thread/materialize-event.js +105 -0
  66. package/dist/leader-thread/materialize-event.js.map +1 -0
  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 +33 -31
  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 +89 -40
  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/make-client-session.d.ts +21 -0
  84. package/dist/make-client-session.d.ts.map +1 -0
  85. package/dist/make-client-session.js +51 -0
  86. package/dist/make-client-session.js.map +1 -0
  87. package/dist/materializer-helper.d.ts +23 -0
  88. package/dist/materializer-helper.d.ts.map +1 -0
  89. package/dist/materializer-helper.js +84 -0
  90. package/dist/materializer-helper.js.map +1 -0
  91. package/dist/otel.d.ts +2 -0
  92. package/dist/otel.d.ts.map +1 -1
  93. package/dist/otel.js +5 -0
  94. package/dist/otel.js.map +1 -1
  95. package/dist/rematerialize-from-eventlog.d.ts +14 -0
  96. package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
  97. package/dist/rematerialize-from-eventlog.js +64 -0
  98. package/dist/rematerialize-from-eventlog.js.map +1 -0
  99. package/dist/schema/EventDef.d.ts +146 -0
  100. package/dist/schema/EventDef.d.ts.map +1 -0
  101. package/dist/schema/EventDef.js +58 -0
  102. package/dist/schema/EventDef.js.map +1 -0
  103. package/dist/schema/EventId.d.ts +35 -15
  104. package/dist/schema/EventId.d.ts.map +1 -1
  105. package/dist/schema/EventId.js +57 -11
  106. package/dist/schema/EventId.js.map +1 -1
  107. package/dist/schema/EventId.test.d.ts +2 -0
  108. package/dist/schema/EventId.test.d.ts.map +1 -0
  109. package/dist/schema/EventId.test.js +11 -0
  110. package/dist/schema/EventId.test.js.map +1 -0
  111. package/dist/schema/LiveStoreEvent.d.ts +255 -0
  112. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  113. package/dist/schema/LiveStoreEvent.js +118 -0
  114. package/dist/schema/LiveStoreEvent.js.map +1 -0
  115. package/dist/schema/events.d.ts +2 -0
  116. package/dist/schema/events.d.ts.map +1 -0
  117. package/dist/schema/events.js +2 -0
  118. package/dist/schema/events.js.map +1 -0
  119. package/dist/schema/mod.d.ts +7 -5
  120. package/dist/schema/mod.d.ts.map +1 -1
  121. package/dist/schema/mod.js +7 -5
  122. package/dist/schema/mod.js.map +1 -1
  123. package/dist/schema/schema.d.ts +48 -30
  124. package/dist/schema/schema.d.ts.map +1 -1
  125. package/dist/schema/schema.js +36 -43
  126. package/dist/schema/schema.js.map +1 -1
  127. package/dist/schema/state/mod.d.ts +3 -0
  128. package/dist/schema/state/mod.d.ts.map +1 -0
  129. package/dist/schema/state/mod.js +3 -0
  130. package/dist/schema/state/mod.js.map +1 -0
  131. package/dist/schema/state/sqlite/client-document-def.d.ts +223 -0
  132. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -0
  133. package/dist/schema/state/sqlite/client-document-def.js +170 -0
  134. package/dist/schema/state/sqlite/client-document-def.js.map +1 -0
  135. package/dist/schema/state/sqlite/client-document-def.test.d.ts +2 -0
  136. package/dist/schema/state/sqlite/client-document-def.test.d.ts.map +1 -0
  137. package/dist/schema/state/sqlite/client-document-def.test.js +201 -0
  138. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -0
  139. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +69 -0
  140. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -0
  141. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +71 -0
  142. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -0
  143. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +3 -0
  144. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -0
  145. package/dist/schema/state/sqlite/db-schema/ast/validate.js +12 -0
  146. package/dist/schema/state/sqlite/db-schema/ast/validate.js.map +1 -0
  147. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +90 -0
  148. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -0
  149. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +87 -0
  150. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -0
  151. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts +2 -0
  152. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  153. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +29 -0
  154. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -0
  155. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +90 -0
  156. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -0
  157. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +41 -0
  158. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -0
  159. package/dist/schema/state/sqlite/db-schema/hash.d.ts +2 -0
  160. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -0
  161. package/dist/schema/state/sqlite/db-schema/hash.js +14 -0
  162. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -0
  163. package/dist/schema/state/sqlite/db-schema/mod.d.ts +3 -0
  164. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -0
  165. package/dist/schema/state/sqlite/db-schema/mod.js +3 -0
  166. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -0
  167. package/dist/schema/state/sqlite/mod.d.ts +17 -0
  168. package/dist/schema/state/sqlite/mod.d.ts.map +1 -0
  169. package/dist/schema/state/sqlite/mod.js +41 -0
  170. package/dist/schema/state/sqlite/mod.js.map +1 -0
  171. package/dist/schema/state/sqlite/query-builder/api.d.ts +294 -0
  172. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -0
  173. package/dist/schema/state/sqlite/query-builder/api.js +6 -0
  174. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -0
  175. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +7 -0
  176. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -0
  177. package/dist/schema/state/sqlite/query-builder/astToSql.js +190 -0
  178. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -0
  179. package/dist/schema/state/sqlite/query-builder/impl.d.ts +7 -0
  180. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -0
  181. package/dist/schema/state/sqlite/query-builder/impl.js +286 -0
  182. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -0
  183. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +87 -0
  184. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -0
  185. package/dist/schema/state/sqlite/query-builder/impl.test.js +554 -0
  186. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -0
  187. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.d.ts +7 -0
  188. package/dist/schema/state/sqlite/query-builder/mod.d.ts.map +1 -0
  189. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.js +7 -0
  190. package/dist/schema/state/sqlite/query-builder/mod.js.map +1 -0
  191. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -0
  192. package/dist/schema/{schema-helpers.js → state/sqlite/schema-helpers.js} +1 -1
  193. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -0
  194. package/dist/schema/state/sqlite/system-tables.d.ts +574 -0
  195. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -0
  196. package/dist/schema/state/sqlite/system-tables.js +87 -0
  197. package/dist/schema/state/sqlite/system-tables.js.map +1 -0
  198. package/dist/schema/state/sqlite/table-def.d.ts +84 -0
  199. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -0
  200. package/dist/schema/state/sqlite/table-def.js +36 -0
  201. package/dist/schema/state/sqlite/table-def.js.map +1 -0
  202. package/dist/schema-management/common.d.ts +7 -7
  203. package/dist/schema-management/common.d.ts.map +1 -1
  204. package/dist/schema-management/common.js.map +1 -1
  205. package/dist/schema-management/migrations.d.ts +6 -6
  206. package/dist/schema-management/migrations.d.ts.map +1 -1
  207. package/dist/schema-management/migrations.js +33 -24
  208. package/dist/schema-management/migrations.js.map +1 -1
  209. package/dist/schema-management/validate-schema.d.ts +8 -0
  210. package/dist/schema-management/validate-schema.d.ts.map +1 -0
  211. package/dist/schema-management/validate-schema.js +39 -0
  212. package/dist/schema-management/validate-schema.js.map +1 -0
  213. package/dist/sql-queries/misc.d.ts.map +1 -1
  214. package/dist/sql-queries/sql-queries.d.ts +1 -1
  215. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  216. package/dist/sql-queries/sql-queries.js.map +1 -1
  217. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  218. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  219. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  220. package/dist/sql-queries/types.d.ts +2 -1
  221. package/dist/sql-queries/types.d.ts.map +1 -1
  222. package/dist/sql-queries/types.js.map +1 -1
  223. package/dist/sync/ClientSessionSyncProcessor.d.ts +66 -0
  224. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
  225. package/dist/sync/ClientSessionSyncProcessor.js +209 -0
  226. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
  227. package/dist/sync/index.d.ts +1 -1
  228. package/dist/sync/index.d.ts.map +1 -1
  229. package/dist/sync/index.js +1 -1
  230. package/dist/sync/index.js.map +1 -1
  231. package/dist/sync/next/compact-events.d.ts.map +1 -1
  232. package/dist/sync/next/facts.d.ts +19 -19
  233. package/dist/sync/next/facts.d.ts.map +1 -1
  234. package/dist/sync/next/facts.js +3 -3
  235. package/dist/sync/next/facts.js.map +1 -1
  236. package/dist/sync/next/history-dag-common.d.ts +6 -7
  237. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  238. package/dist/sync/next/history-dag-common.js +4 -2
  239. package/dist/sync/next/history-dag-common.js.map +1 -1
  240. package/dist/sync/next/history-dag.d.ts.map +1 -1
  241. package/dist/sync/next/history-dag.js +2 -2
  242. package/dist/sync/next/history-dag.js.map +1 -1
  243. package/dist/sync/next/rebase-events.d.ts +10 -8
  244. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  245. package/dist/sync/next/rebase-events.js +11 -8
  246. package/dist/sync/next/rebase-events.js.map +1 -1
  247. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  248. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  249. package/dist/sync/next/test/compact-events.test.js +76 -76
  250. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  251. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +25 -25
  252. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  253. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +67 -36
  254. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  255. package/dist/sync/next/test/mod.d.ts +1 -1
  256. package/dist/sync/next/test/mod.d.ts.map +1 -1
  257. package/dist/sync/next/test/mod.js +1 -1
  258. package/dist/sync/next/test/mod.js.map +1 -1
  259. package/dist/sync/sync.d.ts +55 -20
  260. package/dist/sync/sync.d.ts.map +1 -1
  261. package/dist/sync/sync.js +7 -3
  262. package/dist/sync/sync.js.map +1 -1
  263. package/dist/sync/syncstate.d.ts +213 -82
  264. package/dist/sync/syncstate.d.ts.map +1 -1
  265. package/dist/sync/syncstate.js +319 -120
  266. package/dist/sync/syncstate.js.map +1 -1
  267. package/dist/sync/syncstate.test.js +295 -275
  268. package/dist/sync/syncstate.test.js.map +1 -1
  269. package/dist/sync/validate-push-payload.d.ts +2 -2
  270. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  271. package/dist/sync/validate-push-payload.js +2 -2
  272. package/dist/sync/validate-push-payload.js.map +1 -1
  273. package/dist/util.d.ts +2 -2
  274. package/dist/util.d.ts.map +1 -1
  275. package/dist/version.d.ts +1 -1
  276. package/dist/version.d.ts.map +1 -1
  277. package/dist/version.js +1 -1
  278. package/dist/version.js.map +1 -1
  279. package/package.json +13 -6
  280. package/src/__tests__/fixture.ts +36 -15
  281. package/src/adapter-types.ts +116 -83
  282. package/src/debug-info.ts +1 -0
  283. package/src/devtools/devtools-messages-client-session.ts +142 -0
  284. package/src/devtools/devtools-messages-common.ts +115 -0
  285. package/src/devtools/devtools-messages-leader.ts +191 -0
  286. package/src/devtools/devtools-messages.ts +3 -243
  287. package/src/devtools/devtools-sessioninfo.ts +101 -0
  288. package/src/devtools/mod.ts +59 -0
  289. package/src/index.ts +7 -15
  290. package/src/leader-thread/LeaderSyncProcessor.ts +933 -0
  291. package/src/leader-thread/connection.ts +54 -9
  292. package/src/leader-thread/eventlog.ts +194 -0
  293. package/src/leader-thread/leader-worker-devtools.ts +235 -191
  294. package/src/leader-thread/make-leader-thread-layer.ts +138 -78
  295. package/src/leader-thread/materialize-event.ts +169 -0
  296. package/src/leader-thread/mod.ts +1 -1
  297. package/src/leader-thread/recreate-db.ts +38 -39
  298. package/src/leader-thread/shutdown-channel.ts +2 -4
  299. package/src/leader-thread/types.ts +98 -53
  300. package/src/make-client-session.ts +119 -0
  301. package/src/materializer-helper.ts +135 -0
  302. package/src/otel.ts +8 -0
  303. package/src/rematerialize-from-eventlog.ts +117 -0
  304. package/src/schema/EventDef.ts +227 -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/events.ts +1 -0
  309. package/src/schema/mod.ts +7 -5
  310. package/src/schema/schema.ts +85 -81
  311. package/src/schema/state/mod.ts +2 -0
  312. package/src/schema/state/sqlite/client-document-def.test.ts +238 -0
  313. package/src/schema/state/sqlite/client-document-def.ts +444 -0
  314. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +142 -0
  315. package/src/schema/state/sqlite/db-schema/ast/validate.ts +13 -0
  316. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  317. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -0
  318. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +242 -0
  319. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +222 -0
  320. package/src/schema/state/sqlite/db-schema/hash.ts +14 -0
  321. package/src/schema/state/sqlite/db-schema/mod.ts +2 -0
  322. package/src/schema/state/sqlite/mod.ts +73 -0
  323. package/src/schema/state/sqlite/query-builder/api.ts +440 -0
  324. package/src/schema/state/sqlite/query-builder/astToSql.ts +232 -0
  325. package/src/schema/state/sqlite/query-builder/impl.test.ts +608 -0
  326. package/src/schema/state/sqlite/query-builder/impl.ts +350 -0
  327. package/src/{query-builder → schema/state/sqlite/query-builder}/mod.ts +7 -0
  328. package/src/schema/{schema-helpers.ts → state/sqlite/schema-helpers.ts} +1 -1
  329. package/src/schema/state/sqlite/system-tables.ts +116 -0
  330. package/src/schema/state/sqlite/table-def.ts +197 -0
  331. package/src/schema-management/common.ts +7 -7
  332. package/src/schema-management/migrations.ts +43 -37
  333. package/src/schema-management/validate-schema.ts +61 -0
  334. package/src/sql-queries/sql-queries.ts +1 -1
  335. package/src/sql-queries/sql-query-builder.ts +1 -2
  336. package/src/sql-queries/types.ts +3 -1
  337. package/src/sync/ClientSessionSyncProcessor.ts +332 -0
  338. package/src/sync/index.ts +1 -1
  339. package/src/sync/next/facts.ts +32 -33
  340. package/src/sync/next/history-dag-common.ts +9 -5
  341. package/src/sync/next/history-dag.ts +2 -2
  342. package/src/sync/next/rebase-events.ts +22 -16
  343. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  344. package/src/sync/next/test/compact-events.test.ts +78 -78
  345. package/src/sync/next/test/event-fixtures.ts +219 -0
  346. package/src/sync/next/test/mod.ts +1 -1
  347. package/src/sync/sync.ts +51 -19
  348. package/src/sync/syncstate.test.ts +335 -308
  349. package/src/sync/syncstate.ts +394 -212
  350. package/src/sync/validate-push-payload.ts +7 -4
  351. package/src/version.ts +1 -1
  352. package/dist/derived-mutations.d.ts +0 -109
  353. package/dist/derived-mutations.d.ts.map +0 -1
  354. package/dist/derived-mutations.js +0 -54
  355. package/dist/derived-mutations.js.map +0 -1
  356. package/dist/derived-mutations.test.d.ts +0 -2
  357. package/dist/derived-mutations.test.d.ts.map +0 -1
  358. package/dist/derived-mutations.test.js +0 -93
  359. package/dist/derived-mutations.test.js.map +0 -1
  360. package/dist/devtools/devtools-bridge.d.ts +0 -12
  361. package/dist/devtools/devtools-bridge.d.ts.map +0 -1
  362. package/dist/devtools/devtools-bridge.js +0 -2
  363. package/dist/devtools/devtools-bridge.js.map +0 -1
  364. package/dist/devtools/devtools-window-message.d.ts +0 -29
  365. package/dist/devtools/devtools-window-message.d.ts.map +0 -1
  366. package/dist/devtools/devtools-window-message.js +0 -33
  367. package/dist/devtools/devtools-window-message.js.map +0 -1
  368. package/dist/devtools/index.d.ts +0 -42
  369. package/dist/devtools/index.d.ts.map +0 -1
  370. package/dist/devtools/index.js +0 -48
  371. package/dist/devtools/index.js.map +0 -1
  372. package/dist/init-singleton-tables.d.ts +0 -4
  373. package/dist/init-singleton-tables.d.ts.map +0 -1
  374. package/dist/init-singleton-tables.js +0 -16
  375. package/dist/init-singleton-tables.js.map +0 -1
  376. package/dist/leader-thread/apply-mutation.d.ts +0 -8
  377. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  378. package/dist/leader-thread/apply-mutation.js +0 -95
  379. package/dist/leader-thread/apply-mutation.js.map +0 -1
  380. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  381. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  382. package/dist/leader-thread/leader-sync-processor.js +0 -422
  383. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  384. package/dist/leader-thread/mutationlog.d.ts +0 -23
  385. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  386. package/dist/leader-thread/mutationlog.js +0 -27
  387. package/dist/leader-thread/mutationlog.js.map +0 -1
  388. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  389. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  390. package/dist/leader-thread/pull-queue-set.js +0 -39
  391. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  392. package/dist/mutation.d.ts +0 -13
  393. package/dist/mutation.d.ts.map +0 -1
  394. package/dist/mutation.js +0 -57
  395. package/dist/mutation.js.map +0 -1
  396. package/dist/query-builder/api.d.ts +0 -190
  397. package/dist/query-builder/api.d.ts.map +0 -1
  398. package/dist/query-builder/api.js +0 -8
  399. package/dist/query-builder/api.js.map +0 -1
  400. package/dist/query-builder/impl.d.ts +0 -12
  401. package/dist/query-builder/impl.d.ts.map +0 -1
  402. package/dist/query-builder/impl.js +0 -244
  403. package/dist/query-builder/impl.js.map +0 -1
  404. package/dist/query-builder/impl.test.d.ts +0 -2
  405. package/dist/query-builder/impl.test.d.ts.map +0 -1
  406. package/dist/query-builder/impl.test.js +0 -212
  407. package/dist/query-builder/impl.test.js.map +0 -1
  408. package/dist/query-builder/mod.d.ts.map +0 -1
  409. package/dist/query-builder/mod.js.map +0 -1
  410. package/dist/query-info.d.ts +0 -38
  411. package/dist/query-info.d.ts.map +0 -1
  412. package/dist/query-info.js +0 -7
  413. package/dist/query-info.js.map +0 -1
  414. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  415. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  416. package/dist/rehydrate-from-mutationlog.js +0 -72
  417. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  418. package/dist/schema/MutationEvent.d.ts +0 -191
  419. package/dist/schema/MutationEvent.d.ts.map +0 -1
  420. package/dist/schema/MutationEvent.js +0 -56
  421. package/dist/schema/MutationEvent.js.map +0 -1
  422. package/dist/schema/mutations.d.ts +0 -107
  423. package/dist/schema/mutations.d.ts.map +0 -1
  424. package/dist/schema/mutations.js +0 -42
  425. package/dist/schema/mutations.js.map +0 -1
  426. package/dist/schema/schema-helpers.d.ts.map +0 -1
  427. package/dist/schema/schema-helpers.js.map +0 -1
  428. package/dist/schema/system-tables.d.ts +0 -399
  429. package/dist/schema/system-tables.d.ts.map +0 -1
  430. package/dist/schema/system-tables.js +0 -51
  431. package/dist/schema/system-tables.js.map +0 -1
  432. package/dist/schema/table-def.d.ts +0 -156
  433. package/dist/schema/table-def.d.ts.map +0 -1
  434. package/dist/schema/table-def.js +0 -79
  435. package/dist/schema/table-def.js.map +0 -1
  436. package/dist/schema-management/validate-mutation-defs.d.ts +0 -8
  437. package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
  438. package/dist/schema-management/validate-mutation-defs.js +0 -39
  439. package/dist/schema-management/validate-mutation-defs.js.map +0 -1
  440. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  441. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  442. package/dist/sync/client-session-sync-processor.js +0 -131
  443. package/dist/sync/client-session-sync-processor.js.map +0 -1
  444. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  445. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  446. package/src/derived-mutations.test.ts +0 -101
  447. package/src/derived-mutations.ts +0 -166
  448. package/src/devtools/devtools-bridge.ts +0 -13
  449. package/src/devtools/devtools-window-message.ts +0 -27
  450. package/src/devtools/index.ts +0 -48
  451. package/src/init-singleton-tables.ts +0 -24
  452. package/src/leader-thread/apply-mutation.ts +0 -143
  453. package/src/leader-thread/leader-sync-processor.ts +0 -666
  454. package/src/leader-thread/mutationlog.ts +0 -42
  455. package/src/leader-thread/pull-queue-set.ts +0 -58
  456. package/src/mutation.ts +0 -81
  457. package/src/query-builder/api.ts +0 -289
  458. package/src/query-builder/impl.test.ts +0 -239
  459. package/src/query-builder/impl.ts +0 -285
  460. package/src/query-info.ts +0 -78
  461. package/src/rehydrate-from-mutationlog.ts +0 -127
  462. package/src/schema/MutationEvent.ts +0 -161
  463. package/src/schema/mutations.ts +0 -192
  464. package/src/schema/system-tables.ts +0 -97
  465. package/src/schema/table-def.ts +0 -343
  466. package/src/schema-management/validate-mutation-defs.ts +0 -63
  467. package/src/sync/client-session-sync-processor.ts +0 -207
  468. package/src/sync/next/test/mutation-fixtures.ts +0 -231
  469. package/tsconfig.json +0 -11
  470. /package/dist/schema/{schema-helpers.d.ts → state/sqlite/schema-helpers.d.ts} +0 -0
@@ -0,0 +1,255 @@
1
+ import { Option, Schema } from '@livestore/utils/effect';
2
+ import type { EventDef, EventDefRecord } from './EventDef.js';
3
+ import * as EventId from './EventId.js';
4
+ import type { LiveStoreSchema } from './schema.js';
5
+ export type EventDefPartial<TEventDef extends EventDef.Any> = {
6
+ name: TEventDef['name'];
7
+ args: Schema.Schema.Type<TEventDef['schema']>;
8
+ };
9
+ export type PartialEncoded<TEventDef extends EventDef.Any> = {
10
+ name: TEventDef['name'];
11
+ args: Schema.Schema.Encoded<TEventDef['schema']>;
12
+ };
13
+ export type ForEventDef<TEventDef extends EventDef.Any> = {
14
+ name: TEventDef['name'];
15
+ args: Schema.Schema.Type<TEventDef['schema']>;
16
+ id: EventId.EventId;
17
+ parentId: EventId.EventId;
18
+ clientId: string;
19
+ sessionId: string;
20
+ };
21
+ export type EventDefEncoded<TEventDef extends EventDef.Any> = {
22
+ name: TEventDef['name'];
23
+ args: Schema.Schema.Encoded<TEventDef['schema']>;
24
+ id: EventId.EventId;
25
+ parentId: EventId.EventId;
26
+ clientId: string;
27
+ sessionId: string;
28
+ };
29
+ export type AnyDecoded = ForEventDef<EventDef.Any>;
30
+ export declare const AnyDecoded: Schema.Struct<{
31
+ name: typeof Schema.String;
32
+ args: typeof Schema.Any;
33
+ id: Schema.Struct<{
34
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
35
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
36
+ }>;
37
+ parentId: Schema.Struct<{
38
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
39
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
40
+ }>;
41
+ clientId: typeof Schema.String;
42
+ sessionId: typeof Schema.String;
43
+ }>;
44
+ export type AnyEncoded = EventDefEncoded<EventDef.Any>;
45
+ export declare const AnyEncoded: Schema.Struct<{
46
+ name: typeof Schema.String;
47
+ args: typeof Schema.Any;
48
+ id: Schema.Struct<{
49
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
50
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
51
+ }>;
52
+ parentId: Schema.Struct<{
53
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
54
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
55
+ }>;
56
+ clientId: typeof Schema.String;
57
+ sessionId: typeof Schema.String;
58
+ }>;
59
+ export declare const AnyEncodedGlobal: Schema.Struct<{
60
+ name: typeof Schema.String;
61
+ args: typeof Schema.Any;
62
+ id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
63
+ parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
64
+ clientId: typeof Schema.String;
65
+ sessionId: typeof Schema.String;
66
+ }>;
67
+ export type AnyEncodedGlobal = typeof AnyEncodedGlobal.Type;
68
+ export type PartialAnyDecoded = EventDefPartial<EventDef.Any>;
69
+ export type PartialAnyEncoded = PartialEncoded<EventDef.Any>;
70
+ export declare const PartialAnyEncoded: Schema.Struct<{
71
+ name: typeof Schema.String;
72
+ args: typeof Schema.Any;
73
+ }>;
74
+ export type PartialForSchema<TSchema extends LiveStoreSchema> = {
75
+ [K in keyof TSchema['_EventDefMapType']]: EventDefPartial<TSchema['_EventDefMapType'][K]>;
76
+ }[keyof TSchema['_EventDefMapType']];
77
+ export type ForSchema<TSchema extends LiveStoreSchema> = {
78
+ [K in keyof TSchema['_EventDefMapType']]: ForEventDef<TSchema['_EventDefMapType'][K]>;
79
+ }[keyof TSchema['_EventDefMapType']];
80
+ export declare const isPartialEventDef: (event: AnyDecoded | PartialAnyDecoded) => event is PartialAnyDecoded;
81
+ export type ForEventDefRecord<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
82
+ [K in keyof TEventDefRecord]: {
83
+ name: K;
84
+ args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
85
+ id: EventId.EventId;
86
+ parentId: EventId.EventId;
87
+ clientId: string;
88
+ sessionId: string;
89
+ };
90
+ }[keyof TEventDefRecord], {
91
+ [K in keyof TEventDefRecord]: {
92
+ name: K;
93
+ args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
94
+ id: EventId.EventId;
95
+ parentId: EventId.EventId;
96
+ clientId: string;
97
+ sessionId: string;
98
+ };
99
+ }[keyof TEventDefRecord]>;
100
+ export type EventDefPartialSchema<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
101
+ [K in keyof TEventDefRecord]: {
102
+ name: K;
103
+ args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
104
+ };
105
+ }[keyof TEventDefRecord], {
106
+ [K in keyof TEventDefRecord]: {
107
+ name: K;
108
+ args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
109
+ };
110
+ }[keyof TEventDefRecord]>;
111
+ export declare const makeEventDefSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
112
+ export declare const makeEventDefPartialSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => EventDefPartialSchema<TSchema["_EventDefMapType"]>;
113
+ export declare const makeEventDefSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
114
+ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
115
+ name: typeof Schema.String;
116
+ args: typeof Schema.Any;
117
+ id: Schema.Struct<{
118
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
119
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
120
+ }>;
121
+ parentId: Schema.Struct<{
122
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
123
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
124
+ }>;
125
+ clientId: typeof Schema.String;
126
+ sessionId: typeof Schema.String;
127
+ meta: Schema.PropertySignature<":", {
128
+ sessionChangeset: {
129
+ readonly _tag: "sessionChangeset";
130
+ readonly debug?: any;
131
+ readonly data: Uint8Array<ArrayBufferLike>;
132
+ } | {
133
+ readonly _tag: "no-op";
134
+ } | {
135
+ readonly _tag: "unset";
136
+ };
137
+ syncMetadata: Option.Option<Schema.JsonValue>;
138
+ }, never, "?:", {
139
+ sessionChangeset: {
140
+ readonly _tag: "sessionChangeset";
141
+ readonly data: readonly number[];
142
+ readonly debug?: any;
143
+ } | {
144
+ readonly _tag: "no-op";
145
+ } | {
146
+ readonly _tag: "unset";
147
+ };
148
+ syncMetadata: {
149
+ readonly _tag: "None";
150
+ } | {
151
+ readonly _tag: "Some";
152
+ readonly value: Schema.JsonValue;
153
+ };
154
+ } | undefined, true, never>;
155
+ }, Schema.Struct.Encoded<{
156
+ name: typeof Schema.String;
157
+ args: typeof Schema.Any;
158
+ id: Schema.Struct<{
159
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
160
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
161
+ }>;
162
+ parentId: Schema.Struct<{
163
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
164
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
165
+ }>;
166
+ clientId: typeof Schema.String;
167
+ sessionId: typeof Schema.String;
168
+ meta: Schema.PropertySignature<":", {
169
+ sessionChangeset: {
170
+ readonly _tag: "sessionChangeset";
171
+ readonly debug?: any;
172
+ readonly data: Uint8Array<ArrayBufferLike>;
173
+ } | {
174
+ readonly _tag: "no-op";
175
+ } | {
176
+ readonly _tag: "unset";
177
+ };
178
+ syncMetadata: Option.Option<Schema.JsonValue>;
179
+ }, never, "?:", {
180
+ sessionChangeset: {
181
+ readonly _tag: "sessionChangeset";
182
+ readonly data: readonly number[];
183
+ readonly debug?: any;
184
+ } | {
185
+ readonly _tag: "no-op";
186
+ } | {
187
+ readonly _tag: "unset";
188
+ };
189
+ syncMetadata: {
190
+ readonly _tag: "None";
191
+ } | {
192
+ readonly _tag: "Some";
193
+ readonly value: Schema.JsonValue;
194
+ };
195
+ } | undefined, true, never>;
196
+ }>, never, {
197
+ readonly clientId: string;
198
+ } & {
199
+ readonly sessionId: string;
200
+ } & {
201
+ readonly name: string;
202
+ } & {
203
+ readonly id: {
204
+ readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
205
+ readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
206
+ };
207
+ } & {
208
+ readonly args: any;
209
+ } & {
210
+ readonly parentId: {
211
+ readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
212
+ readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
213
+ };
214
+ } & {
215
+ readonly meta?: {
216
+ sessionChangeset: {
217
+ readonly _tag: "sessionChangeset";
218
+ readonly debug?: any;
219
+ readonly data: Uint8Array<ArrayBufferLike>;
220
+ } | {
221
+ readonly _tag: "no-op";
222
+ } | {
223
+ readonly _tag: "unset";
224
+ };
225
+ syncMetadata: Option.Option<Schema.JsonValue>;
226
+ } | undefined;
227
+ }, {}, {}>;
228
+ /** Equivalent to AnyEncoded but with a meta field and some convenience methods */
229
+ export declare class EncodedWithMeta extends EncodedWithMeta_base {
230
+ toJSON: () => any;
231
+ /**
232
+ * Example: (global event)
233
+ * For event id e2 → e1 which should be rebased on event id e3 → e2
234
+ * the resulting event id will be e4 → e3
235
+ *
236
+ * Example: (client event)
237
+ * For event id e2+1 → e2 which should be rebased on event id e3 → e2
238
+ * the resulting event id will be e3+1 → e3
239
+ *
240
+ * Syntax: e2+2 → e2+1
241
+ * ^ ^ ^ ^
242
+ * | | | +- client parent id
243
+ * | | +--- global parent id
244
+ * | +-- client id
245
+ * +---- global id
246
+ * Client id is ommitted for global events
247
+ */
248
+ rebase: (parentId: EventId.EventId, isClient: boolean) => EncodedWithMeta;
249
+ static fromGlobal: (event: AnyEncodedGlobal, syncMetadata: Option.Option<Schema.JsonValue>) => EncodedWithMeta;
250
+ toGlobal: () => AnyEncodedGlobal;
251
+ }
252
+ /** NOTE `meta` is not considered for equality */
253
+ export declare const isEqualEncoded: (a: AnyEncoded, b: AnyEncoded) => boolean;
254
+ export {};
255
+ //# sourceMappingURL=LiveStoreEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveStoreEvent.d.ts","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { memoizeByRef } from '@livestore/utils';
2
+ import { Option, Schema } from '@livestore/utils/effect';
3
+ import * as EventId from './EventId.js';
4
+ export const AnyDecoded = Schema.Struct({
5
+ name: Schema.String,
6
+ args: Schema.Any,
7
+ id: EventId.EventId,
8
+ parentId: EventId.EventId,
9
+ clientId: Schema.String,
10
+ sessionId: Schema.String,
11
+ }).annotations({ title: 'LiveStoreEvent.AnyDecoded' });
12
+ export const AnyEncoded = Schema.Struct({
13
+ name: Schema.String,
14
+ args: Schema.Any,
15
+ id: EventId.EventId,
16
+ parentId: EventId.EventId,
17
+ clientId: Schema.String,
18
+ sessionId: Schema.String,
19
+ }).annotations({ title: 'LiveStoreEvent.AnyEncoded' });
20
+ export const AnyEncodedGlobal = Schema.Struct({
21
+ name: Schema.String,
22
+ args: Schema.Any,
23
+ id: EventId.GlobalEventId,
24
+ parentId: EventId.GlobalEventId,
25
+ clientId: Schema.String,
26
+ sessionId: Schema.String,
27
+ }).annotations({ title: 'LiveStoreEvent.AnyEncodedGlobal' });
28
+ export const PartialAnyEncoded = Schema.Struct({
29
+ name: Schema.String,
30
+ args: Schema.Any,
31
+ });
32
+ export const isPartialEventDef = (event) => 'id' in event === false && 'parentId' in event === false;
33
+ export const makeEventDefSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
34
+ name: Schema.Literal(def.name),
35
+ args: def.schema,
36
+ id: EventId.EventId,
37
+ parentId: EventId.EventId,
38
+ clientId: Schema.String,
39
+ sessionId: Schema.String,
40
+ }))).annotations({ title: 'EventDef' });
41
+ export const makeEventDefPartialSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
42
+ name: Schema.Literal(def.name),
43
+ args: def.schema,
44
+ }))).annotations({ title: 'EventDefPartial' });
45
+ export const makeEventDefSchemaMemo = memoizeByRef(makeEventDefSchema);
46
+ /** Equivalent to AnyEncoded but with a meta field and some convenience methods */
47
+ export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMeta')({
48
+ name: Schema.String,
49
+ args: Schema.Any,
50
+ // TODO rename to `.num` / `.parentNum`
51
+ id: EventId.EventId,
52
+ parentId: EventId.EventId,
53
+ clientId: Schema.String,
54
+ sessionId: Schema.String,
55
+ // TODO get rid of `meta` again by cleaning up the usage implementations
56
+ meta: Schema.Struct({
57
+ sessionChangeset: Schema.Union(Schema.TaggedStruct('sessionChangeset', {
58
+ data: Schema.Uint8Array,
59
+ debug: Schema.Any.pipe(Schema.optional),
60
+ }), Schema.TaggedStruct('no-op', {}), Schema.TaggedStruct('unset', {})),
61
+ syncMetadata: Schema.Option(Schema.JsonValue),
62
+ }).pipe(Schema.mutable, Schema.optional, Schema.withDefaults({
63
+ constructor: () => ({ sessionChangeset: { _tag: 'unset' }, syncMetadata: Option.none() }),
64
+ decoding: () => ({ sessionChangeset: { _tag: 'unset' }, syncMetadata: Option.none() }),
65
+ })),
66
+ }) {
67
+ toJSON = () => {
68
+ // Only used for logging/debugging
69
+ // - More readable way to print the id + parentId
70
+ // - not including `meta`, `clientId`, `sessionId`
71
+ return {
72
+ id: `${EventId.toString(this.id)} → ${EventId.toString(this.parentId)} (${this.clientId}, ${this.sessionId})`,
73
+ name: this.name,
74
+ args: this.args,
75
+ };
76
+ };
77
+ /**
78
+ * Example: (global event)
79
+ * For event id e2 → e1 which should be rebased on event id e3 → e2
80
+ * the resulting event id will be e4 → e3
81
+ *
82
+ * Example: (client event)
83
+ * For event id e2+1 → e2 which should be rebased on event id e3 → e2
84
+ * the resulting event id will be e3+1 → e3
85
+ *
86
+ * Syntax: e2+2 → e2+1
87
+ * ^ ^ ^ ^
88
+ * | | | +- client parent id
89
+ * | | +--- global parent id
90
+ * | +-- client id
91
+ * +---- global id
92
+ * Client id is ommitted for global events
93
+ */
94
+ rebase = (parentId, isClient) => new EncodedWithMeta({
95
+ ...this,
96
+ ...EventId.nextPair(parentId, isClient),
97
+ });
98
+ static fromGlobal = (event, syncMetadata) => new EncodedWithMeta({
99
+ ...event,
100
+ id: { global: event.id, client: EventId.clientDefault },
101
+ parentId: { global: event.parentId, client: EventId.clientDefault },
102
+ meta: { sessionChangeset: { _tag: 'unset' }, syncMetadata },
103
+ });
104
+ toGlobal = () => ({
105
+ ...this,
106
+ id: this.id.global,
107
+ parentId: this.parentId.global,
108
+ });
109
+ }
110
+ /** NOTE `meta` is not considered for equality */
111
+ export const isEqualEncoded = (a, b) => a.id.global === b.id.global &&
112
+ a.id.client === b.id.client &&
113
+ a.name === b.name &&
114
+ a.clientId === b.clientId &&
115
+ a.sessionId === b.sessionId &&
116
+ // TODO use schema equality here
117
+ JSON.stringify(a.args) === JSON.stringify(b.args);
118
+ //# sourceMappingURL=LiveStoreEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveStoreEvent.js","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { defineEvent, synced, clientOnly } from './EventDef.js';
2
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/schema/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { defineEvent, synced, clientOnly } from './EventDef.js';
2
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/schema/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -1,8 +1,10 @@
1
- export * from './system-tables.js';
2
- export * as DbSchema from './table-def.js';
3
- export * from './mutations.js';
4
- export * from './schema-helpers.js';
1
+ export * as SystemTables from './state/sqlite/system-tables.js';
2
+ export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.js';
3
+ export * from './EventDef.js';
4
+ export * from './state/sqlite/schema-helpers.js';
5
5
  export * from './schema.js';
6
- export * as MutationEvent from './MutationEvent.js';
6
+ export * as State from './state/mod.js';
7
+ export * as LiveStoreEvent from './LiveStoreEvent.js';
7
8
  export * as EventId from './EventId.js';
9
+ export * as Events from './events.js';
8
10
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,eAAe,CAAA;AAC7B,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -1,8 +1,10 @@
1
- export * from './system-tables.js';
2
- export * as DbSchema from './table-def.js';
3
- export * from './mutations.js';
4
- export * from './schema-helpers.js';
1
+ export * as SystemTables from './state/sqlite/system-tables.js';
2
+ export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.js';
3
+ export * from './EventDef.js';
4
+ export * from './state/sqlite/schema-helpers.js';
5
5
  export * from './schema.js';
6
- export * as MutationEvent from './MutationEvent.js';
6
+ export * as State from './state/mod.js';
7
+ export * as LiveStoreEvent from './LiveStoreEvent.js';
7
8
  export * as EventId from './EventId.js';
9
+ export * as Events from './events.js';
8
10
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,eAAe,CAAA;AAC7B,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -1,55 +1,73 @@
1
- import type { SqliteDsl } from '@livestore/db-schema';
2
1
  import type { MigrationOptions } from '../adapter-types.js';
3
- import { type MutationDef, type MutationDefMap, type MutationDefRecord, type RawSqlMutation } from './mutations.js';
4
- import type { TableDef, TableDefBase } from './table-def.js';
2
+ import type { EventDef, EventDefRecord, Materializer, RawSqlEvent } from './EventDef.js';
3
+ import type { SqliteDsl } from './state/sqlite/db-schema/mod.js';
4
+ import type { TableDef } from './state/sqlite/table-def.js';
5
5
  export declare const LiveStoreSchemaSymbol: unique symbol;
6
6
  export type LiveStoreSchemaSymbol = typeof LiveStoreSchemaSymbol;
7
- export type LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbSchema, TMutationsDefRecord extends MutationDefRecord = MutationDefRecord> = {
8
- readonly _Type: LiveStoreSchemaSymbol;
7
+ export type LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbSchema, TEventsDefRecord extends EventDefRecord = EventDefRecord> = {
8
+ readonly LiveStoreSchemaSymbol: LiveStoreSchemaSymbol;
9
9
  /** Only used on type-level */
10
10
  readonly _DbSchemaType: TDbSchema;
11
11
  /** Only used on type-level */
12
- readonly _MutationDefMapType: TMutationsDefRecord;
13
- readonly tables: Map<string, TableDef>;
14
- readonly mutations: MutationDefMap;
15
- /** Compound hash of all table defs etc */
16
- readonly hash: number;
17
- migrationOptions: MigrationOptions;
12
+ readonly _EventDefMapType: TEventsDefRecord;
13
+ readonly state: State;
14
+ readonly eventsDefsMap: Map<string, EventDef.AnyWithoutFn>;
15
+ readonly devtools: {
16
+ /** @default 'default' */
17
+ readonly alias: string;
18
+ };
19
+ };
20
+ export type State = {
21
+ readonly sqlite: {
22
+ readonly tables: Map<string, TableDef.Any>;
23
+ readonly migrations: MigrationOptions;
24
+ /** Compound hash of all table defs etc */
25
+ readonly hash: number;
26
+ };
27
+ readonly materializers: Map<string, Materializer>;
18
28
  };
19
29
  export type InputSchema = {
20
- readonly tables: Record<string, TableDefBase> | ReadonlyArray<TableDefBase>;
21
- readonly mutations?: ReadonlyArray<MutationDef.Any> | Record<string, MutationDef.Any>;
22
- /**
23
- * Can be used to isolate multiple LiveStore apps running in the same origin
24
- */
25
- readonly key?: string;
30
+ readonly events: ReadonlyArray<EventDef.AnyWithoutFn> | Record<string, EventDef.AnyWithoutFn>;
31
+ readonly state: State;
32
+ readonly devtools?: {
33
+ /**
34
+ * This alias value is used to disambiguate between multiple schemas in the devtools.
35
+ * Only needed when an app uses multiple schemas.
36
+ *
37
+ * @default 'default'
38
+ */
39
+ readonly alias?: string;
40
+ };
41
+ };
42
+ export declare const makeSchema: <TInputSchema extends InputSchema>(
43
+ /** Note when using the object-notation for tables/events, the object keys are ignored and not used as table/mutation names */
44
+ inputSchema: TInputSchema) => FromInputSchema.DeriveSchema<TInputSchema>;
45
+ export declare const getEventDef: <TSchema extends LiveStoreSchema>(schema: TSchema, eventName: string) => {
46
+ eventDef: EventDef.AnyWithoutFn;
47
+ materializer: Materializer;
26
48
  };
27
- export declare const makeSchema: <TInputSchema extends InputSchema>(inputSchema: TInputSchema & {
28
- /** "hard-reset" is currently the default strategy */
29
- migrations?: MigrationOptions<FromInputSchema.DeriveSchema<TInputSchema>>;
30
- }) => FromInputSchema.DeriveSchema<TInputSchema>;
31
49
  export declare namespace FromInputSchema {
32
- export type DeriveSchema<TInputSchema extends InputSchema> = LiveStoreSchema<DbSchemaFromInputSchemaTables<TInputSchema['tables']>, MutationDefRecordFromInputSchemaMutations<TInputSchema['mutations']>>;
50
+ export type DeriveSchema<TInputSchema extends InputSchema> = LiveStoreSchema<DbSchemaFromInputSchemaTables<TInputSchema['state']['sqlite']['tables']>, EventDefRecordFromInputSchemaEvents<TInputSchema['events']>>;
33
51
  /**
34
52
  * In case of ...
35
53
  * - array: we use the table name of each array item (= table definition) as the object key
36
54
  * - object: we discard the keys of the input object and use the table name of each object value (= table definition) as the new object key
37
55
  */
38
- type DbSchemaFromInputSchemaTables<TTables extends InputSchema['tables']> = TTables extends ReadonlyArray<TableDef> ? {
56
+ type DbSchemaFromInputSchemaTables<TTables extends InputSchema['state']['sqlite']['tables']> = TTables extends ReadonlyArray<TableDef> ? {
39
57
  [K in TTables[number] as K['sqliteDef']['name']]: K['sqliteDef'];
40
58
  } : TTables extends Record<string, TableDef> ? {
41
59
  [K in keyof TTables as TTables[K]['sqliteDef']['name']]: TTables[K]['sqliteDef'];
42
60
  } : never;
43
- type MutationDefRecordFromInputSchemaMutations<TMutations extends InputSchema['mutations']> = TMutations extends ReadonlyArray<MutationDef.Any> ? {
44
- [K in TMutations[number] as K['name']]: K;
61
+ type EventDefRecordFromInputSchemaEvents<TEvents extends InputSchema['events']> = TEvents extends ReadonlyArray<EventDef.Any> ? {
62
+ [K in TEvents[number] as K['name']]: K;
45
63
  } & {
46
- 'livestore.RawSql': RawSqlMutation;
47
- } : TMutations extends {
48
- [name: string]: MutationDef.Any;
64
+ 'livestore.RawSql': RawSqlEvent;
65
+ } : TEvents extends {
66
+ [name: string]: EventDef.Any;
49
67
  } ? {
50
- [K in keyof TMutations as TMutations[K]['name']]: TMutations[K];
68
+ [K in keyof TEvents as TEvents[K]['name']]: TEvents[K];
51
69
  } & {
52
- 'livestore.RawSql': RawSqlMutation;
70
+ 'livestore.RawSql': RawSqlEvent;
53
71
  } : never;
54
72
  export {};
55
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}