@livestore/common 0.3.0-dev.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) 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 +120 -64
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +39 -8
  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 -580
  28. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  29. package/dist/devtools/devtools-messages.js +3 -174
  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 -9
  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 +36 -11
  44. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  45. package/dist/leader-thread/LeaderSyncProcessor.js +426 -252
  46. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  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.map +1 -1
  56. package/dist/leader-thread/leader-worker-devtools.js +155 -80
  57. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  58. package/dist/leader-thread/make-leader-thread-layer.d.ts +22 -9
  59. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  60. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  61. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  62. package/dist/leader-thread/materialize-event.d.ts +16 -0
  63. package/dist/leader-thread/materialize-event.d.ts.map +1 -0
  64. package/dist/leader-thread/materialize-event.js +109 -0
  65. package/dist/leader-thread/materialize-event.js.map +1 -0
  66. package/dist/leader-thread/mod.d.ts +1 -1
  67. package/dist/leader-thread/mod.d.ts.map +1 -1
  68. package/dist/leader-thread/mod.js +1 -1
  69. package/dist/leader-thread/mod.js.map +1 -1
  70. package/dist/leader-thread/recreate-db.d.ts +4 -2
  71. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  72. package/dist/leader-thread/recreate-db.js +28 -32
  73. package/dist/leader-thread/recreate-db.js.map +1 -1
  74. package/dist/leader-thread/shutdown-channel.d.ts +2 -5
  75. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  76. package/dist/leader-thread/shutdown-channel.js +2 -4
  77. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  78. package/dist/leader-thread/types.d.ts +79 -38
  79. package/dist/leader-thread/types.d.ts.map +1 -1
  80. package/dist/leader-thread/types.js +1 -3
  81. package/dist/leader-thread/types.js.map +1 -1
  82. package/dist/make-client-session.d.ts +23 -0
  83. package/dist/make-client-session.d.ts.map +1 -0
  84. package/dist/make-client-session.js +57 -0
  85. package/dist/make-client-session.js.map +1 -0
  86. package/dist/materializer-helper.d.ts +23 -0
  87. package/dist/materializer-helper.d.ts.map +1 -0
  88. package/dist/materializer-helper.js +86 -0
  89. package/dist/materializer-helper.js.map +1 -0
  90. package/dist/otel.d.ts +2 -0
  91. package/dist/otel.d.ts.map +1 -1
  92. package/dist/otel.js +5 -0
  93. package/dist/otel.js.map +1 -1
  94. package/dist/rematerialize-from-eventlog.d.ts +14 -0
  95. package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
  96. package/dist/rematerialize-from-eventlog.js +64 -0
  97. package/dist/rematerialize-from-eventlog.js.map +1 -0
  98. package/dist/schema/EventDef.d.ts +146 -0
  99. package/dist/schema/EventDef.d.ts.map +1 -0
  100. package/dist/schema/EventDef.js +58 -0
  101. package/dist/schema/EventDef.js.map +1 -0
  102. package/dist/schema/EventSequenceNumber.d.ts +57 -0
  103. package/dist/schema/EventSequenceNumber.d.ts.map +1 -0
  104. package/dist/schema/EventSequenceNumber.js +82 -0
  105. package/dist/schema/EventSequenceNumber.js.map +1 -0
  106. package/dist/schema/EventSequenceNumber.test.d.ts +2 -0
  107. package/dist/schema/EventSequenceNumber.test.d.ts.map +1 -0
  108. package/dist/schema/EventSequenceNumber.test.js +11 -0
  109. package/dist/schema/EventSequenceNumber.test.js.map +1 -0
  110. package/dist/schema/LiveStoreEvent.d.ts +257 -0
  111. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  112. package/dist/schema/LiveStoreEvent.js +117 -0
  113. package/dist/schema/LiveStoreEvent.js.map +1 -0
  114. package/dist/schema/events.d.ts +2 -0
  115. package/dist/schema/events.d.ts.map +1 -0
  116. package/dist/schema/events.js +2 -0
  117. package/dist/schema/events.js.map +1 -0
  118. package/dist/schema/mod.d.ts +8 -6
  119. package/dist/schema/mod.d.ts.map +1 -1
  120. package/dist/schema/mod.js +8 -6
  121. package/dist/schema/mod.js.map +1 -1
  122. package/dist/schema/schema.d.ts +50 -32
  123. package/dist/schema/schema.d.ts.map +1 -1
  124. package/dist/schema/schema.js +36 -43
  125. package/dist/schema/schema.js.map +1 -1
  126. package/dist/schema/state/mod.d.ts +3 -0
  127. package/dist/schema/state/mod.d.ts.map +1 -0
  128. package/dist/schema/state/mod.js +3 -0
  129. package/dist/schema/state/mod.js.map +1 -0
  130. package/dist/schema/state/sqlite/client-document-def.d.ts +223 -0
  131. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -0
  132. package/dist/schema/state/sqlite/client-document-def.js +170 -0
  133. package/dist/schema/state/sqlite/client-document-def.js.map +1 -0
  134. package/dist/schema/state/sqlite/client-document-def.test.d.ts +2 -0
  135. package/dist/schema/state/sqlite/client-document-def.test.d.ts.map +1 -0
  136. package/dist/schema/state/sqlite/client-document-def.test.js +201 -0
  137. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -0
  138. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +69 -0
  139. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -0
  140. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +71 -0
  141. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -0
  142. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +3 -0
  143. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -0
  144. package/dist/schema/state/sqlite/db-schema/ast/validate.js +12 -0
  145. package/dist/schema/state/sqlite/db-schema/ast/validate.js.map +1 -0
  146. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +90 -0
  147. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -0
  148. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +87 -0
  149. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -0
  150. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts +2 -0
  151. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  152. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +29 -0
  153. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -0
  154. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +90 -0
  155. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -0
  156. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +41 -0
  157. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -0
  158. package/dist/schema/state/sqlite/db-schema/hash.d.ts +2 -0
  159. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -0
  160. package/dist/schema/state/sqlite/db-schema/hash.js +14 -0
  161. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -0
  162. package/dist/schema/state/sqlite/db-schema/mod.d.ts +3 -0
  163. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -0
  164. package/dist/schema/state/sqlite/db-schema/mod.js +3 -0
  165. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -0
  166. package/dist/schema/state/sqlite/mod.d.ts +17 -0
  167. package/dist/schema/state/sqlite/mod.d.ts.map +1 -0
  168. package/dist/schema/state/sqlite/mod.js +41 -0
  169. package/dist/schema/state/sqlite/mod.js.map +1 -0
  170. package/dist/schema/state/sqlite/query-builder/api.d.ts +294 -0
  171. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -0
  172. package/dist/schema/state/sqlite/query-builder/api.js +6 -0
  173. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -0
  174. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +7 -0
  175. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -0
  176. package/dist/schema/state/sqlite/query-builder/astToSql.js +190 -0
  177. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -0
  178. package/dist/schema/state/sqlite/query-builder/impl.d.ts +7 -0
  179. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -0
  180. package/dist/schema/state/sqlite/query-builder/impl.js +286 -0
  181. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -0
  182. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +87 -0
  183. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -0
  184. package/dist/schema/state/sqlite/query-builder/impl.test.js +563 -0
  185. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -0
  186. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.d.ts +7 -0
  187. package/dist/schema/state/sqlite/query-builder/mod.d.ts.map +1 -0
  188. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.js +7 -0
  189. package/dist/schema/state/sqlite/query-builder/mod.js.map +1 -0
  190. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -0
  191. package/dist/schema/{schema-helpers.js → state/sqlite/schema-helpers.js} +1 -1
  192. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -0
  193. package/dist/schema/state/sqlite/system-tables.d.ts +574 -0
  194. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -0
  195. package/dist/schema/state/sqlite/system-tables.js +88 -0
  196. package/dist/schema/state/sqlite/system-tables.js.map +1 -0
  197. package/dist/schema/state/sqlite/table-def.d.ts +84 -0
  198. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -0
  199. package/dist/schema/state/sqlite/table-def.js +36 -0
  200. package/dist/schema/state/sqlite/table-def.js.map +1 -0
  201. package/dist/schema-management/common.d.ts +7 -7
  202. package/dist/schema-management/common.d.ts.map +1 -1
  203. package/dist/schema-management/common.js.map +1 -1
  204. package/dist/schema-management/migrations.d.ts +6 -6
  205. package/dist/schema-management/migrations.d.ts.map +1 -1
  206. package/dist/schema-management/migrations.js +27 -18
  207. package/dist/schema-management/migrations.js.map +1 -1
  208. package/dist/schema-management/validate-schema.d.ts +8 -0
  209. package/dist/schema-management/validate-schema.d.ts.map +1 -0
  210. package/dist/schema-management/validate-schema.js +39 -0
  211. package/dist/schema-management/validate-schema.js.map +1 -0
  212. package/dist/sql-queries/misc.d.ts.map +1 -1
  213. package/dist/sql-queries/sql-queries.d.ts +1 -1
  214. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  215. package/dist/sql-queries/sql-queries.js.map +1 -1
  216. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  217. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  218. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  219. package/dist/sql-queries/types.d.ts +2 -1
  220. package/dist/sql-queries/types.d.ts.map +1 -1
  221. package/dist/sql-queries/types.js.map +1 -1
  222. package/dist/sync/ClientSessionSyncProcessor.d.ts +40 -19
  223. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  224. package/dist/sync/ClientSessionSyncProcessor.js +149 -73
  225. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  226. package/dist/sync/next/compact-events.d.ts.map +1 -1
  227. package/dist/sync/next/compact-events.js +38 -35
  228. package/dist/sync/next/compact-events.js.map +1 -1
  229. package/dist/sync/next/facts.d.ts +21 -21
  230. package/dist/sync/next/facts.d.ts.map +1 -1
  231. package/dist/sync/next/facts.js +11 -11
  232. package/dist/sync/next/facts.js.map +1 -1
  233. package/dist/sync/next/history-dag-common.d.ts +9 -7
  234. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  235. package/dist/sync/next/history-dag-common.js +10 -5
  236. package/dist/sync/next/history-dag-common.js.map +1 -1
  237. package/dist/sync/next/history-dag.d.ts +0 -2
  238. package/dist/sync/next/history-dag.d.ts.map +1 -1
  239. package/dist/sync/next/history-dag.js +16 -14
  240. package/dist/sync/next/history-dag.js.map +1 -1
  241. package/dist/sync/next/rebase-events.d.ts +10 -8
  242. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  243. package/dist/sync/next/rebase-events.js +18 -10
  244. package/dist/sync/next/rebase-events.js.map +1 -1
  245. package/dist/sync/next/test/compact-events.calculator.test.js +39 -34
  246. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  247. package/dist/sync/next/test/compact-events.test.js +77 -77
  248. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  249. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +35 -25
  250. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  251. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +81 -38
  252. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  253. package/dist/sync/next/test/mod.d.ts +1 -1
  254. package/dist/sync/next/test/mod.d.ts.map +1 -1
  255. package/dist/sync/next/test/mod.js +1 -1
  256. package/dist/sync/next/test/mod.js.map +1 -1
  257. package/dist/sync/sync.d.ts +46 -21
  258. package/dist/sync/sync.d.ts.map +1 -1
  259. package/dist/sync/sync.js +10 -6
  260. package/dist/sync/sync.js.map +1 -1
  261. package/dist/sync/syncstate.d.ts +193 -84
  262. package/dist/sync/syncstate.d.ts.map +1 -1
  263. package/dist/sync/syncstate.js +305 -151
  264. package/dist/sync/syncstate.js.map +1 -1
  265. package/dist/sync/syncstate.test.js +267 -303
  266. package/dist/sync/syncstate.test.js.map +1 -1
  267. package/dist/sync/validate-push-payload.d.ts +2 -2
  268. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  269. package/dist/sync/validate-push-payload.js +4 -4
  270. package/dist/sync/validate-push-payload.js.map +1 -1
  271. package/dist/util.d.ts +2 -2
  272. package/dist/util.d.ts.map +1 -1
  273. package/dist/version.d.ts +2 -2
  274. package/dist/version.d.ts.map +1 -1
  275. package/dist/version.js +2 -2
  276. package/dist/version.js.map +1 -1
  277. package/package.json +10 -4
  278. package/src/__tests__/fixture.ts +36 -15
  279. package/src/adapter-types.ts +107 -68
  280. package/src/debug-info.ts +1 -0
  281. package/src/devtools/devtools-messages-client-session.ts +142 -0
  282. package/src/devtools/devtools-messages-common.ts +115 -0
  283. package/src/devtools/devtools-messages-leader.ts +191 -0
  284. package/src/devtools/devtools-messages.ts +3 -246
  285. package/src/devtools/devtools-sessioninfo.ts +101 -0
  286. package/src/devtools/mod.ts +59 -0
  287. package/src/index.ts +7 -9
  288. package/src/leader-thread/LeaderSyncProcessor.ts +664 -394
  289. package/src/leader-thread/connection.ts +54 -9
  290. package/src/leader-thread/eventlog.ts +199 -0
  291. package/src/leader-thread/leader-worker-devtools.ts +227 -104
  292. package/src/leader-thread/make-leader-thread-layer.ts +121 -72
  293. package/src/leader-thread/materialize-event.ts +173 -0
  294. package/src/leader-thread/mod.ts +1 -1
  295. package/src/leader-thread/recreate-db.ts +33 -38
  296. package/src/leader-thread/shutdown-channel.ts +2 -4
  297. package/src/leader-thread/types.ts +84 -46
  298. package/src/make-client-session.ts +136 -0
  299. package/src/materializer-helper.ts +138 -0
  300. package/src/otel.ts +8 -0
  301. package/src/rematerialize-from-eventlog.ts +117 -0
  302. package/src/schema/EventDef.ts +227 -0
  303. package/src/schema/EventSequenceNumber.test.ts +12 -0
  304. package/src/schema/EventSequenceNumber.ts +121 -0
  305. package/src/schema/LiveStoreEvent.ts +240 -0
  306. package/src/schema/events.ts +1 -0
  307. package/src/schema/mod.ts +8 -6
  308. package/src/schema/schema.ts +88 -84
  309. package/src/schema/state/mod.ts +2 -0
  310. package/src/schema/state/sqlite/client-document-def.test.ts +238 -0
  311. package/src/schema/state/sqlite/client-document-def.ts +444 -0
  312. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +142 -0
  313. package/src/schema/state/sqlite/db-schema/ast/validate.ts +13 -0
  314. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  315. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -0
  316. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +242 -0
  317. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +222 -0
  318. package/src/schema/state/sqlite/db-schema/hash.ts +14 -0
  319. package/src/schema/state/sqlite/db-schema/mod.ts +2 -0
  320. package/src/schema/state/sqlite/mod.ts +73 -0
  321. package/src/schema/state/sqlite/query-builder/api.ts +440 -0
  322. package/src/schema/state/sqlite/query-builder/astToSql.ts +232 -0
  323. package/src/schema/state/sqlite/query-builder/impl.test.ts +617 -0
  324. package/src/schema/state/sqlite/query-builder/impl.ts +351 -0
  325. package/src/{query-builder → schema/state/sqlite/query-builder}/mod.ts +7 -0
  326. package/src/schema/{schema-helpers.ts → state/sqlite/schema-helpers.ts} +1 -1
  327. package/src/schema/state/sqlite/system-tables.ts +117 -0
  328. package/src/schema/state/sqlite/table-def.ts +197 -0
  329. package/src/schema-management/common.ts +7 -7
  330. package/src/schema-management/migrations.ts +37 -31
  331. package/src/schema-management/validate-schema.ts +61 -0
  332. package/src/sql-queries/sql-queries.ts +1 -1
  333. package/src/sql-queries/sql-query-builder.ts +1 -2
  334. package/src/sql-queries/types.ts +3 -1
  335. package/src/sync/ClientSessionSyncProcessor.ts +218 -94
  336. package/src/sync/next/compact-events.ts +38 -35
  337. package/src/sync/next/facts.ts +43 -41
  338. package/src/sync/next/history-dag-common.ts +17 -10
  339. package/src/sync/next/history-dag.ts +16 -17
  340. package/src/sync/next/rebase-events.ts +29 -17
  341. package/src/sync/next/test/compact-events.calculator.test.ts +46 -46
  342. package/src/sync/next/test/compact-events.test.ts +79 -79
  343. package/src/sync/next/test/event-fixtures.ts +226 -0
  344. package/src/sync/next/test/mod.ts +1 -1
  345. package/src/sync/sync.ts +46 -21
  346. package/src/sync/syncstate.test.ts +312 -345
  347. package/src/sync/syncstate.ts +414 -224
  348. package/src/sync/validate-push-payload.ts +6 -6
  349. package/src/version.ts +2 -2
  350. package/dist/derived-mutations.d.ts +0 -109
  351. package/dist/derived-mutations.d.ts.map +0 -1
  352. package/dist/derived-mutations.js +0 -54
  353. package/dist/derived-mutations.js.map +0 -1
  354. package/dist/derived-mutations.test.d.ts +0 -2
  355. package/dist/derived-mutations.test.d.ts.map +0 -1
  356. package/dist/derived-mutations.test.js +0 -93
  357. package/dist/derived-mutations.test.js.map +0 -1
  358. package/dist/devtools/devtools-bridge.d.ts +0 -13
  359. package/dist/devtools/devtools-bridge.d.ts.map +0 -1
  360. package/dist/devtools/devtools-bridge.js +0 -2
  361. package/dist/devtools/devtools-bridge.js.map +0 -1
  362. package/dist/devtools/devtools-window-message.d.ts +0 -29
  363. package/dist/devtools/devtools-window-message.d.ts.map +0 -1
  364. package/dist/devtools/devtools-window-message.js +0 -33
  365. package/dist/devtools/devtools-window-message.js.map +0 -1
  366. package/dist/devtools/index.d.ts +0 -42
  367. package/dist/devtools/index.d.ts.map +0 -1
  368. package/dist/devtools/index.js +0 -48
  369. package/dist/devtools/index.js.map +0 -1
  370. package/dist/init-singleton-tables.d.ts +0 -4
  371. package/dist/init-singleton-tables.d.ts.map +0 -1
  372. package/dist/init-singleton-tables.js +0 -16
  373. package/dist/init-singleton-tables.js.map +0 -1
  374. package/dist/leader-thread/apply-mutation.d.ts +0 -11
  375. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  376. package/dist/leader-thread/apply-mutation.js +0 -107
  377. package/dist/leader-thread/apply-mutation.js.map +0 -1
  378. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  379. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  380. package/dist/leader-thread/leader-sync-processor.js +0 -430
  381. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  382. package/dist/leader-thread/mutationlog.d.ts +0 -10
  383. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  384. package/dist/leader-thread/mutationlog.js +0 -28
  385. package/dist/leader-thread/mutationlog.js.map +0 -1
  386. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  387. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  388. package/dist/leader-thread/pull-queue-set.js +0 -39
  389. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  390. package/dist/mutation.d.ts +0 -20
  391. package/dist/mutation.d.ts.map +0 -1
  392. package/dist/mutation.js +0 -57
  393. package/dist/mutation.js.map +0 -1
  394. package/dist/query-builder/api.d.ts +0 -190
  395. package/dist/query-builder/api.d.ts.map +0 -1
  396. package/dist/query-builder/api.js +0 -8
  397. package/dist/query-builder/api.js.map +0 -1
  398. package/dist/query-builder/impl.d.ts +0 -12
  399. package/dist/query-builder/impl.d.ts.map +0 -1
  400. package/dist/query-builder/impl.js +0 -244
  401. package/dist/query-builder/impl.js.map +0 -1
  402. package/dist/query-builder/impl.test.d.ts +0 -2
  403. package/dist/query-builder/impl.test.d.ts.map +0 -1
  404. package/dist/query-builder/impl.test.js +0 -212
  405. package/dist/query-builder/impl.test.js.map +0 -1
  406. package/dist/query-builder/mod.d.ts.map +0 -1
  407. package/dist/query-builder/mod.js.map +0 -1
  408. package/dist/query-info.d.ts +0 -38
  409. package/dist/query-info.d.ts.map +0 -1
  410. package/dist/query-info.js +0 -7
  411. package/dist/query-info.js.map +0 -1
  412. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  413. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  414. package/dist/rehydrate-from-mutationlog.js +0 -66
  415. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  416. package/dist/schema/EventId.d.ts +0 -39
  417. package/dist/schema/EventId.d.ts.map +0 -1
  418. package/dist/schema/EventId.js +0 -38
  419. package/dist/schema/EventId.js.map +0 -1
  420. package/dist/schema/EventId.test.d.ts +0 -2
  421. package/dist/schema/EventId.test.d.ts.map +0 -1
  422. package/dist/schema/EventId.test.js +0 -11
  423. package/dist/schema/EventId.test.js.map +0 -1
  424. package/dist/schema/MutationEvent.d.ts +0 -167
  425. package/dist/schema/MutationEvent.d.ts.map +0 -1
  426. package/dist/schema/MutationEvent.js +0 -72
  427. package/dist/schema/MutationEvent.js.map +0 -1
  428. package/dist/schema/MutationEvent.test.d.ts +0 -2
  429. package/dist/schema/MutationEvent.test.d.ts.map +0 -1
  430. package/dist/schema/MutationEvent.test.js +0 -2
  431. package/dist/schema/MutationEvent.test.js.map +0 -1
  432. package/dist/schema/mutations.d.ts +0 -107
  433. package/dist/schema/mutations.d.ts.map +0 -1
  434. package/dist/schema/mutations.js +0 -42
  435. package/dist/schema/mutations.js.map +0 -1
  436. package/dist/schema/schema-helpers.d.ts.map +0 -1
  437. package/dist/schema/schema-helpers.js.map +0 -1
  438. package/dist/schema/system-tables.d.ts +0 -399
  439. package/dist/schema/system-tables.d.ts.map +0 -1
  440. package/dist/schema/system-tables.js +0 -59
  441. package/dist/schema/system-tables.js.map +0 -1
  442. package/dist/schema/table-def.d.ts +0 -156
  443. package/dist/schema/table-def.d.ts.map +0 -1
  444. package/dist/schema/table-def.js +0 -79
  445. package/dist/schema/table-def.js.map +0 -1
  446. package/dist/schema-management/validate-mutation-defs.d.ts +0 -8
  447. package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
  448. package/dist/schema-management/validate-mutation-defs.js +0 -39
  449. package/dist/schema-management/validate-mutation-defs.js.map +0 -1
  450. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  451. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  452. package/dist/sync/client-session-sync-processor.js +0 -131
  453. package/dist/sync/client-session-sync-processor.js.map +0 -1
  454. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  455. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  456. package/src/derived-mutations.test.ts +0 -101
  457. package/src/derived-mutations.ts +0 -170
  458. package/src/devtools/devtools-bridge.ts +0 -14
  459. package/src/devtools/devtools-window-message.ts +0 -27
  460. package/src/devtools/index.ts +0 -48
  461. package/src/init-singleton-tables.ts +0 -24
  462. package/src/leader-thread/apply-mutation.ts +0 -161
  463. package/src/leader-thread/mutationlog.ts +0 -46
  464. package/src/leader-thread/pull-queue-set.ts +0 -58
  465. package/src/mutation.ts +0 -91
  466. package/src/query-builder/api.ts +0 -289
  467. package/src/query-builder/impl.test.ts +0 -239
  468. package/src/query-builder/impl.ts +0 -285
  469. package/src/query-info.ts +0 -78
  470. package/src/rehydrate-from-mutationlog.ts +0 -119
  471. package/src/schema/EventId.test.ts +0 -12
  472. package/src/schema/EventId.ts +0 -60
  473. package/src/schema/MutationEvent.ts +0 -185
  474. package/src/schema/mutations.ts +0 -192
  475. package/src/schema/system-tables.ts +0 -105
  476. package/src/schema/table-def.ts +0 -343
  477. package/src/schema-management/validate-mutation-defs.ts +0 -63
  478. package/src/sync/next/test/mutation-fixtures.ts +0 -224
  479. package/tsconfig.json +0 -11
  480. /package/dist/schema/{schema-helpers.d.ts → state/sqlite/schema-helpers.d.ts} +0 -0
@@ -1,185 +0,0 @@
1
- import { memoizeByRef } from '@livestore/utils'
2
- import type { Deferred } from '@livestore/utils/effect'
3
- import { Schema } from '@livestore/utils/effect'
4
-
5
- import type { InvalidPushError } from '../sync/sync.js'
6
- import * as EventId from './EventId.js'
7
- import type { MutationDef, MutationDefRecord } from './mutations.js'
8
- import type { LiveStoreSchema } from './schema.js'
9
-
10
- export type MutationEventPartial<TMutationsDef extends MutationDef.Any> = {
11
- mutation: TMutationsDef['name']
12
- args: Schema.Schema.Type<TMutationsDef['schema']>
13
- }
14
-
15
- export type MutationEventPartialEncoded<TMutationsDef extends MutationDef.Any> = {
16
- mutation: TMutationsDef['name']
17
- args: Schema.Schema.Encoded<TMutationsDef['schema']>
18
- }
19
-
20
- export type MutationEvent<TMutationsDef extends MutationDef.Any> = {
21
- mutation: TMutationsDef['name']
22
- args: Schema.Schema.Type<TMutationsDef['schema']>
23
- id: EventId.EventId
24
- parentId: EventId.EventId
25
- }
26
-
27
- export type MutationEventEncoded<TMutationsDef extends MutationDef.Any> = {
28
- mutation: TMutationsDef['name']
29
- args: Schema.Schema.Encoded<TMutationsDef['schema']>
30
- id: EventId.EventId
31
- parentId: EventId.EventId
32
- }
33
-
34
- export type AnyDecoded = MutationEvent<MutationDef.Any>
35
- export const AnyDecoded = Schema.Struct({
36
- mutation: Schema.String,
37
- args: Schema.Any,
38
- id: EventId.EventId,
39
- parentId: EventId.EventId,
40
- }).annotations({ title: 'MutationEvent.AnyDecoded' })
41
-
42
- export type AnyEncoded = MutationEventEncoded<MutationDef.Any>
43
- export const AnyEncoded = Schema.Struct({
44
- mutation: Schema.String,
45
- args: Schema.Any,
46
- id: EventId.EventId,
47
- parentId: EventId.EventId,
48
- }).annotations({ title: 'MutationEvent.AnyEncoded' })
49
-
50
- export const AnyEncodedGlobal = Schema.Struct({
51
- mutation: Schema.String,
52
- args: Schema.Any,
53
- id: EventId.GlobalEventId,
54
- parentId: EventId.GlobalEventId,
55
- }).annotations({ title: 'MutationEvent.AnyEncodedGlobal' })
56
- export type AnyEncodedGlobal = typeof AnyEncodedGlobal.Type
57
-
58
- export type PartialAnyDecoded = MutationEventPartial<MutationDef.Any>
59
- export type PartialAnyEncoded = MutationEventPartialEncoded<MutationDef.Any>
60
-
61
- export type PartialForSchema<TSchema extends LiveStoreSchema> = {
62
- [K in keyof TSchema['_MutationDefMapType']]: MutationEventPartial<TSchema['_MutationDefMapType'][K]>
63
- }[keyof TSchema['_MutationDefMapType']]
64
-
65
- export type ForSchema<TSchema extends LiveStoreSchema> = {
66
- [K in keyof TSchema['_MutationDefMapType']]: MutationEvent<TSchema['_MutationDefMapType'][K]>
67
- }[keyof TSchema['_MutationDefMapType']]
68
-
69
- export const isPartialMutationEvent = (
70
- mutationEvent: AnyDecoded | PartialAnyDecoded,
71
- ): mutationEvent is PartialAnyDecoded => 'id' in mutationEvent === false && 'parentId' in mutationEvent === false
72
-
73
- export type ForMutationDefRecord<TMutationsDefRecord extends MutationDefRecord> = Schema.Schema<
74
- {
75
- [K in keyof TMutationsDefRecord]: {
76
- mutation: K
77
- args: Schema.Schema.Type<TMutationsDefRecord[K]['schema']>
78
- id: EventId.EventId
79
- parentId: EventId.EventId
80
- }
81
- }[keyof TMutationsDefRecord],
82
- {
83
- [K in keyof TMutationsDefRecord]: {
84
- mutation: K
85
- args: Schema.Schema.Encoded<TMutationsDefRecord[K]['schema']>
86
- id: EventId.EventId
87
- parentId: EventId.EventId
88
- }
89
- }[keyof TMutationsDefRecord]
90
- >
91
-
92
- export type MutationEventPartialSchema<TMutationsDefRecord extends MutationDefRecord> = Schema.Schema<
93
- {
94
- [K in keyof TMutationsDefRecord]: {
95
- mutation: K
96
- args: Schema.Schema.Type<TMutationsDefRecord[K]['schema']>
97
- }
98
- }[keyof TMutationsDefRecord],
99
- {
100
- [K in keyof TMutationsDefRecord]: {
101
- mutation: K
102
- args: Schema.Schema.Encoded<TMutationsDefRecord[K]['schema']>
103
- }
104
- }[keyof TMutationsDefRecord]
105
- >
106
-
107
- export const makeMutationEventSchema = <TSchema extends LiveStoreSchema>(
108
- schema: TSchema,
109
- ): ForMutationDefRecord<TSchema['_MutationDefMapType']> =>
110
- Schema.Union(
111
- ...[...schema.mutations.values()].map((def) =>
112
- Schema.Struct({
113
- mutation: Schema.Literal(def.name),
114
- args: def.schema,
115
- id: EventId.EventId,
116
- parentId: EventId.EventId,
117
- }),
118
- ),
119
- ).annotations({ title: 'MutationEvent' }) as any
120
-
121
- export const makeMutationEventPartialSchema = <TSchema extends LiveStoreSchema>(
122
- schema: TSchema,
123
- ): MutationEventPartialSchema<TSchema['_MutationDefMapType']> =>
124
- Schema.Union(
125
- ...[...schema.mutations.values()].map((def) =>
126
- Schema.Struct({
127
- mutation: Schema.Literal(def.name),
128
- args: def.schema,
129
- }),
130
- ),
131
- ).annotations({ title: 'MutationEventPartial' }) as any
132
-
133
- export const makeMutationEventSchemaMemo = memoizeByRef(makeMutationEventSchema)
134
-
135
- /** Equivalent to AnyEncoded but with a meta field and some convenience methods */
136
- export class EncodedWithMeta extends Schema.Class<EncodedWithMeta>('MutationEvent.EncodedWithMeta')({
137
- mutation: Schema.String,
138
- args: Schema.Any,
139
- id: EventId.EventId,
140
- parentId: EventId.EventId,
141
- meta: Schema.optionalWith(
142
- Schema.Any as Schema.Schema<{
143
- deferred?: Deferred.Deferred<void, InvalidPushError>
144
- sessionChangeset?: Uint8Array
145
- }>,
146
- { default: () => ({}) },
147
- ),
148
- }) {
149
- toJSON = (): any => {
150
- // Only used for logging/debugging
151
- // - More readable way to print the id + parentId
152
- // - not including `meta`
153
- return {
154
- id: `(${this.id.global},${this.id.local}) → (${this.parentId.global},${this.parentId.local})`,
155
- mutation: this.mutation,
156
- args: this.args,
157
- }
158
- }
159
-
160
- rebase = (parentId: EventId.EventId, isLocal: boolean) =>
161
- new EncodedWithMeta({
162
- ...this,
163
- ...EventId.nextPair(parentId, isLocal),
164
- })
165
-
166
- static fromGlobal = (mutationEvent: AnyEncodedGlobal) =>
167
- new EncodedWithMeta({
168
- ...mutationEvent,
169
- id: { global: mutationEvent.id, local: EventId.localDefault },
170
- parentId: { global: mutationEvent.parentId, local: EventId.localDefault },
171
- })
172
-
173
- toGlobal = (): AnyEncodedGlobal => ({
174
- ...this,
175
- id: this.id.global,
176
- parentId: this.parentId.global,
177
- })
178
- }
179
-
180
- export const isEqualEncoded = (a: AnyEncoded, b: AnyEncoded) =>
181
- a.id.global === b.id.global &&
182
- a.id.local === b.id.local &&
183
- a.mutation === b.mutation &&
184
- // TODO use schema equality here
185
- JSON.stringify(a.args) === JSON.stringify(b.args)
@@ -1,192 +0,0 @@
1
- import { Schema } from '@livestore/utils/effect'
2
-
3
- import type { BindValues } from '../sql-queries/sql-queries.js'
4
- import type * as EventId from './EventId.js'
5
-
6
- export type MutationDefMap = Map<string | 'livestore.RawSql', MutationDef.Any>
7
- export type MutationDefRecord = {
8
- 'livestore.RawSql': RawSqlMutation
9
- [name: string]: MutationDef.Any
10
- }
11
-
12
- export type InternalMutationSchema<TRecord extends MutationDefRecord = MutationDefRecord> = {
13
- _DefRecord: TRecord
14
-
15
- map: Map<keyof TRecord, TRecord[keyof TRecord]>
16
- schemaHashMap: Map<keyof TRecord, number>
17
- }
18
-
19
- export type MutationDefSqlResult<TTo> =
20
- | SingleOrReadonlyArray<string>
21
- | ((args: TTo) => SingleOrReadonlyArray<
22
- | string
23
- | {
24
- sql: string
25
- /** Note args need to be manually encoded to `BindValues` when returning this argument */
26
- bindValues: BindValues
27
- writeTables?: ReadonlySet<string>
28
- }
29
- >)
30
-
31
- export type SingleOrReadonlyArray<T> = T | ReadonlyArray<T>
32
-
33
- export type MutationDef<TName extends string, TFrom, TTo> = {
34
- name: TName
35
- schema: Schema.Schema<TTo, TFrom>
36
- sql: MutationDefSqlResult<NoInfer<TTo>>
37
- options: {
38
- /** Warning: This feature is not fully implemented yet */
39
- historyId: string
40
- /**
41
- * When set to true, the mutation won't be synced over the network
42
- */
43
- localOnly: boolean
44
- /** Warning: This feature is not fully implemented yet */
45
- facts: FactsCallback<TTo> | undefined
46
- }
47
-
48
- /** Helper function to construct a partial mutation event */
49
- (
50
- args: TTo,
51
- options?: {
52
- id?: number
53
- },
54
- ): {
55
- mutation: TName
56
- args: TTo
57
- // TODO remove/clean up after sync-next is fully implemented
58
- id?: EventId.EventId
59
- }
60
- }
61
-
62
- export type FactsCallback<TTo> = (
63
- args: TTo,
64
- currentFacts: MutationEventFacts,
65
- ) => {
66
- modify: {
67
- set: Iterable<MutationEventFactInput>
68
- unset: Iterable<MutationEventFactInput>
69
- }
70
- require: Iterable<MutationEventFactInput>
71
- }
72
-
73
- export namespace MutationDef {
74
- export type Any = MutationDef<string, any, any>
75
- }
76
-
77
- export type MutationEventKey = string
78
- export type MutationEventFact = string
79
- export type MutationEventFacts = ReadonlyMap<string, any>
80
-
81
- export type MutationEventFactsGroup = {
82
- modifySet: MutationEventFacts
83
- modifyUnset: MutationEventFacts
84
-
85
- /**
86
- * Events on independent "dependency" branches are commutative which can facilitate more prioritized syncing
87
- */
88
- depRequire: MutationEventFacts
89
- depRead: MutationEventFacts
90
- }
91
-
92
- export type MutationEventFactsSnapshot = Map<string, any>
93
-
94
- export type MutationEventFactInput = string | readonly [string, any]
95
-
96
- export const defineFacts = <
97
- TRecord extends Record<string, MutationEventFactInput | ((...args: any[]) => MutationEventFactInput)>,
98
- >(
99
- record: TRecord,
100
- ): TRecord => record
101
-
102
- export type DefineMutationOptions<TTo> = {
103
- // TODO actually implement this
104
- onError?: (error: any) => void
105
- historyId?: string
106
- /** Warning: This feature is not fully implemented yet */
107
- facts?: (
108
- args: TTo,
109
- currentFacts: MutationEventFacts,
110
- ) => {
111
- modify?: {
112
- set?: Iterable<MutationEventFactInput>
113
- unset?: Iterable<MutationEventFactInput>
114
- }
115
- /**
116
- * Two purposes: constrain history and constrain compaction
117
- */
118
- require?: Iterable<MutationEventFactInput>
119
- }
120
- /**
121
- * When set to true, the mutation won't be synced over the network
122
- */
123
- localOnly?: boolean
124
- }
125
-
126
- // TODO possibly also allow for mutation event subsumption behaviour
127
- export const defineMutation = <TName extends string, TFrom, TTo>(
128
- name: TName,
129
- schema: Schema.Schema<TTo, TFrom>,
130
- sql: MutationDefSqlResult<NoInfer<TTo>>,
131
- options?: DefineMutationOptions<TTo>,
132
- ): MutationDef<TName, TFrom, TTo> => {
133
- const makePartialEvent = (
134
- args: TTo,
135
- options?: {
136
- id?: EventId.EventId
137
- },
138
- ) => ({ mutation: name, args, ...options })
139
-
140
- Object.defineProperty(makePartialEvent, 'name', { value: name })
141
- Object.defineProperty(makePartialEvent, 'schema', { value: schema })
142
- Object.defineProperty(makePartialEvent, 'sql', { value: sql })
143
- Object.defineProperty(makePartialEvent, 'options', {
144
- value: {
145
- historyId: options?.historyId ?? 'main',
146
- localOnly: options?.localOnly ?? false,
147
- facts: options?.facts
148
- ? (args, currentFacts) => {
149
- const res = options.facts!(args, currentFacts)
150
- return {
151
- modify: {
152
- set: res.modify?.set ? new Set(res.modify.set) : new Set(),
153
- unset: res.modify?.unset ? new Set(res.modify.unset) : new Set(),
154
- },
155
- require: res.require ? new Set(res.require) : new Set(),
156
- }
157
- }
158
- : undefined,
159
- } satisfies MutationDef.Any['options'],
160
- })
161
-
162
- return makePartialEvent as MutationDef<TName, TFrom, TTo>
163
- }
164
-
165
- export const makeMutationDefRecord = <TInputRecord extends Record<string, MutationDef.Any>>(
166
- inputRecord: TInputRecord,
167
- ): {
168
- [K in TInputRecord[keyof TInputRecord]['name']]: Extract<TInputRecord[keyof TInputRecord], { name: K }>
169
- } => {
170
- const result: any = {}
171
-
172
- for (const [name, def] of Object.entries(inputRecord)) {
173
- result[name] = def
174
- }
175
-
176
- result['livestore.RawSql'] = rawSqlMutation
177
-
178
- return result
179
- }
180
-
181
- export const rawSqlMutation = defineMutation(
182
- 'livestore.RawSql',
183
- Schema.Struct({
184
- sql: Schema.String,
185
- bindValues: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
186
- writeTables: Schema.optional(Schema.ReadonlySet(Schema.String)),
187
- }),
188
- ({ sql, bindValues, writeTables }) => ({ sql, bindValues: bindValues ?? {}, writeTables }),
189
- )
190
-
191
- export type RawSqlMutation = typeof rawSqlMutation
192
- export type RawSqlMutationEvent = ReturnType<typeof rawSqlMutation>
@@ -1,105 +0,0 @@
1
- import { type SqliteAst as __SqliteAst, SqliteDsl } from '@livestore/db-schema'
2
- import { Schema } from '@livestore/utils/effect'
3
-
4
- import * as EventId from './EventId.js'
5
- import type { FromTable } from './table-def.js'
6
- import { table } from './table-def.js'
7
-
8
- /// App DB
9
-
10
- export const SCHEMA_META_TABLE = '__livestore_schema'
11
-
12
- export const schemaMetaTable = table(
13
- SCHEMA_META_TABLE,
14
- {
15
- tableName: SqliteDsl.text({ primaryKey: true }),
16
- schemaHash: SqliteDsl.integer({ nullable: false }),
17
- /** ISO date format */
18
- updatedAt: SqliteDsl.text({ nullable: false }),
19
- },
20
- { disableAutomaticIdColumn: true },
21
- )
22
-
23
- export type SchemaMetaRow = FromTable.RowDecoded<typeof schemaMetaTable>
24
-
25
- export const SCHEMA_MUTATIONS_META_TABLE = '__livestore_schema_mutations'
26
-
27
- export const schemaMutationsMetaTable = table(
28
- SCHEMA_MUTATIONS_META_TABLE,
29
- {
30
- mutationName: SqliteDsl.text({ primaryKey: true }),
31
- schemaHash: SqliteDsl.integer({ nullable: false }),
32
- /** ISO date format */
33
- updatedAt: SqliteDsl.text({ nullable: false }),
34
- },
35
- { disableAutomaticIdColumn: true },
36
- )
37
-
38
- export type SchemaMutationsMetaRow = FromTable.RowDecoded<typeof schemaMutationsMetaTable>
39
-
40
- /**
41
- * Table which stores SQLite changeset blobs which is used for rolling back
42
- * read-model state during rebasing.
43
- */
44
- export const SESSION_CHANGESET_META_TABLE = '__livestore_session_changeset'
45
-
46
- export const sessionChangesetMetaTable = table(
47
- SESSION_CHANGESET_META_TABLE,
48
- {
49
- // TODO bring back primary key
50
- idGlobal: SqliteDsl.integer({ schema: EventId.GlobalEventId }),
51
- idLocal: SqliteDsl.integer({ schema: EventId.LocalEventId }),
52
- changeset: SqliteDsl.blob({ nullable: true }),
53
- debug: SqliteDsl.json({ nullable: true }),
54
- },
55
- {
56
- disableAutomaticIdColumn: true,
57
- indexes: [{ columns: ['idGlobal', 'idLocal'], name: 'idx_session_changeset_id' }],
58
- },
59
- )
60
-
61
- export type SessionChangesetMetaRow = FromTable.RowDecoded<typeof sessionChangesetMetaTable>
62
-
63
- export const systemTables = [schemaMetaTable, schemaMutationsMetaTable, sessionChangesetMetaTable]
64
-
65
- /// Mutation log DB
66
-
67
- export const SyncStatus = Schema.Literal('synced', 'pending', 'error', 'localOnly')
68
- export type SyncStatus = typeof SyncStatus.Type
69
-
70
- export const MUTATION_LOG_META_TABLE = 'mutation_log'
71
-
72
- export const mutationLogMetaTable = table(
73
- MUTATION_LOG_META_TABLE,
74
- {
75
- idGlobal: SqliteDsl.integer({ primaryKey: true, schema: EventId.GlobalEventId }),
76
- idLocal: SqliteDsl.integer({ primaryKey: true, schema: EventId.LocalEventId }),
77
- parentIdGlobal: SqliteDsl.integer({ schema: EventId.GlobalEventId }),
78
- parentIdLocal: SqliteDsl.integer({ schema: EventId.LocalEventId }),
79
- mutation: SqliteDsl.text({}),
80
- argsJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Any) }),
81
- schemaHash: SqliteDsl.integer({}),
82
- syncMetadataJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Option(Schema.JsonValue)) }),
83
- },
84
- {
85
- disableAutomaticIdColumn: true,
86
- indexes: [
87
- { columns: ['idGlobal'], name: 'idx_idGlobal' },
88
- { columns: ['idGlobal', 'idLocal'], name: 'idx_mutationlog_id' },
89
- ],
90
- },
91
- )
92
-
93
- export type MutationLogMetaRow = FromTable.RowDecoded<typeof mutationLogMetaTable>
94
-
95
- export const SYNC_STATUS_TABLE = '__livestore_sync_status'
96
-
97
- export const syncStatusTable = table(
98
- SYNC_STATUS_TABLE,
99
- {
100
- head: SqliteDsl.integer({ primaryKey: true }),
101
- },
102
- { disableAutomaticIdColumn: true },
103
- )
104
-
105
- export type SyncStatusRow = FromTable.RowDecoded<typeof syncStatusTable>