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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +83 -221
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/__tests__/fixture.js +33 -11
  5. package/dist/__tests__/fixture.js.map +1 -1
  6. package/dist/adapter-types.d.ts +128 -68
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +36 -7
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/bounded-collections.d.ts.map +1 -1
  11. package/dist/debug-info.d.ts +1 -1
  12. package/dist/debug-info.d.ts.map +1 -1
  13. package/dist/debug-info.js +1 -0
  14. package/dist/debug-info.js.map +1 -1
  15. package/dist/devtools/devtools-messages-client-session.d.ts +389 -0
  16. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
  17. package/dist/devtools/devtools-messages-client-session.js +96 -0
  18. package/dist/devtools/devtools-messages-client-session.js.map +1 -0
  19. package/dist/devtools/devtools-messages-common.d.ts +68 -0
  20. package/dist/devtools/devtools-messages-common.d.ts.map +1 -0
  21. package/dist/devtools/devtools-messages-common.js +60 -0
  22. package/dist/devtools/devtools-messages-common.js.map +1 -0
  23. package/dist/devtools/devtools-messages-leader.d.ts +394 -0
  24. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -0
  25. package/dist/devtools/devtools-messages-leader.js +147 -0
  26. package/dist/devtools/devtools-messages-leader.js.map +1 -0
  27. package/dist/devtools/devtools-messages.d.ts +3 -592
  28. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  29. package/dist/devtools/devtools-messages.js +3 -171
  30. package/dist/devtools/devtools-messages.js.map +1 -1
  31. package/dist/devtools/devtools-sessioninfo.d.ts +28 -0
  32. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
  33. package/dist/devtools/devtools-sessioninfo.js +34 -0
  34. package/dist/devtools/devtools-sessioninfo.js.map +1 -0
  35. package/dist/devtools/mod.d.ts +39 -0
  36. package/dist/devtools/mod.d.ts.map +1 -0
  37. package/dist/devtools/mod.js +27 -0
  38. package/dist/devtools/mod.js.map +1 -0
  39. package/dist/index.d.ts +4 -11
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +4 -7
  42. package/dist/index.js.map +1 -1
  43. package/dist/leader-thread/LeaderSyncProcessor.d.ts +62 -0
  44. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -0
  45. package/dist/leader-thread/LeaderSyncProcessor.js +589 -0
  46. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
  47. package/dist/leader-thread/apply-event.d.ts +16 -0
  48. package/dist/leader-thread/apply-event.d.ts.map +1 -0
  49. package/dist/leader-thread/apply-event.js +103 -0
  50. package/dist/leader-thread/apply-event.js.map +1 -0
  51. package/dist/leader-thread/connection.d.ts +34 -6
  52. package/dist/leader-thread/connection.d.ts.map +1 -1
  53. package/dist/leader-thread/connection.js +22 -7
  54. package/dist/leader-thread/connection.js.map +1 -1
  55. package/dist/leader-thread/eventlog.d.ts +27 -0
  56. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  57. package/dist/leader-thread/eventlog.js +123 -0
  58. package/dist/leader-thread/eventlog.js.map +1 -0
  59. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  60. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  61. package/dist/leader-thread/leader-worker-devtools.js +154 -132
  62. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  63. package/dist/leader-thread/make-leader-thread-layer.d.ts +26 -12
  64. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  65. package/dist/leader-thread/make-leader-thread-layer.js +82 -47
  66. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  67. package/dist/leader-thread/mod.d.ts +1 -1
  68. package/dist/leader-thread/mod.d.ts.map +1 -1
  69. package/dist/leader-thread/mod.js +1 -1
  70. package/dist/leader-thread/mod.js.map +1 -1
  71. package/dist/leader-thread/recreate-db.d.ts +4 -2
  72. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  73. package/dist/leader-thread/recreate-db.js +35 -25
  74. package/dist/leader-thread/recreate-db.js.map +1 -1
  75. package/dist/leader-thread/shutdown-channel.d.ts +2 -5
  76. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  77. package/dist/leader-thread/shutdown-channel.js +2 -4
  78. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  79. package/dist/leader-thread/types.d.ts +86 -39
  80. package/dist/leader-thread/types.d.ts.map +1 -1
  81. package/dist/leader-thread/types.js +1 -3
  82. package/dist/leader-thread/types.js.map +1 -1
  83. package/dist/materializer-helper.d.ts +23 -0
  84. package/dist/materializer-helper.d.ts.map +1 -0
  85. package/dist/materializer-helper.js +70 -0
  86. package/dist/materializer-helper.js.map +1 -0
  87. package/dist/otel.d.ts +2 -0
  88. package/dist/otel.d.ts.map +1 -1
  89. package/dist/otel.js +5 -0
  90. package/dist/otel.js.map +1 -1
  91. package/dist/query-builder/api.d.ts +158 -55
  92. package/dist/query-builder/api.d.ts.map +1 -1
  93. package/dist/query-builder/api.js +3 -5
  94. package/dist/query-builder/api.js.map +1 -1
  95. package/dist/query-builder/astToSql.d.ts +7 -0
  96. package/dist/query-builder/astToSql.d.ts.map +1 -0
  97. package/dist/query-builder/astToSql.js +190 -0
  98. package/dist/query-builder/astToSql.js.map +1 -0
  99. package/dist/query-builder/impl.d.ts +3 -8
  100. package/dist/query-builder/impl.d.ts.map +1 -1
  101. package/dist/query-builder/impl.js +166 -124
  102. package/dist/query-builder/impl.js.map +1 -1
  103. package/dist/query-builder/impl.test.d.ts +86 -1
  104. package/dist/query-builder/impl.test.d.ts.map +1 -1
  105. package/dist/query-builder/impl.test.js +411 -69
  106. package/dist/query-builder/impl.test.js.map +1 -1
  107. package/dist/query-builder/mod.d.ts +7 -0
  108. package/dist/query-builder/mod.d.ts.map +1 -1
  109. package/dist/query-builder/mod.js +7 -0
  110. package/dist/query-builder/mod.js.map +1 -1
  111. package/dist/rehydrate-from-eventlog.d.ts +14 -0
  112. package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
  113. package/dist/rehydrate-from-eventlog.js +65 -0
  114. package/dist/rehydrate-from-eventlog.js.map +1 -0
  115. package/dist/schema/EventDef.d.ts +136 -0
  116. package/dist/schema/EventDef.d.ts.map +1 -0
  117. package/dist/schema/EventDef.js +58 -0
  118. package/dist/schema/EventDef.js.map +1 -0
  119. package/dist/schema/EventId.d.ts +35 -15
  120. package/dist/schema/EventId.d.ts.map +1 -1
  121. package/dist/schema/EventId.js +57 -11
  122. package/dist/schema/EventId.js.map +1 -1
  123. package/dist/schema/EventId.test.d.ts +2 -0
  124. package/dist/schema/EventId.test.d.ts.map +1 -0
  125. package/dist/schema/EventId.test.js +11 -0
  126. package/dist/schema/EventId.test.js.map +1 -0
  127. package/dist/schema/LiveStoreEvent.d.ts +255 -0
  128. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  129. package/dist/schema/LiveStoreEvent.js +118 -0
  130. package/dist/schema/LiveStoreEvent.js.map +1 -0
  131. package/dist/schema/client-document-def.d.ts +223 -0
  132. package/dist/schema/client-document-def.d.ts.map +1 -0
  133. package/dist/schema/client-document-def.js +170 -0
  134. package/dist/schema/client-document-def.js.map +1 -0
  135. package/dist/schema/client-document-def.test.d.ts +2 -0
  136. package/dist/schema/client-document-def.test.d.ts.map +1 -0
  137. package/dist/schema/client-document-def.test.js +201 -0
  138. package/dist/schema/client-document-def.test.js.map +1 -0
  139. package/dist/schema/db-schema/ast/sqlite.d.ts +69 -0
  140. package/dist/schema/db-schema/ast/sqlite.d.ts.map +1 -0
  141. package/dist/schema/db-schema/ast/sqlite.js +71 -0
  142. package/dist/schema/db-schema/ast/sqlite.js.map +1 -0
  143. package/dist/schema/db-schema/ast/validate.d.ts +3 -0
  144. package/dist/schema/db-schema/ast/validate.d.ts.map +1 -0
  145. package/dist/schema/db-schema/ast/validate.js +12 -0
  146. package/dist/schema/db-schema/ast/validate.js.map +1 -0
  147. package/dist/schema/db-schema/dsl/field-defs.d.ts +90 -0
  148. package/dist/schema/db-schema/dsl/field-defs.d.ts.map +1 -0
  149. package/dist/schema/db-schema/dsl/field-defs.js +87 -0
  150. package/dist/schema/db-schema/dsl/field-defs.js.map +1 -0
  151. package/dist/schema/db-schema/dsl/field-defs.test.d.ts +2 -0
  152. package/dist/schema/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  153. package/dist/schema/db-schema/dsl/field-defs.test.js +29 -0
  154. package/dist/schema/db-schema/dsl/field-defs.test.js.map +1 -0
  155. package/dist/schema/db-schema/dsl/mod.d.ts +90 -0
  156. package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -0
  157. package/dist/schema/db-schema/dsl/mod.js +41 -0
  158. package/dist/schema/db-schema/dsl/mod.js.map +1 -0
  159. package/dist/schema/db-schema/hash.d.ts +2 -0
  160. package/dist/schema/db-schema/hash.d.ts.map +1 -0
  161. package/dist/schema/db-schema/hash.js +14 -0
  162. package/dist/schema/db-schema/hash.js.map +1 -0
  163. package/dist/schema/db-schema/mod.d.ts +3 -0
  164. package/dist/schema/db-schema/mod.d.ts.map +1 -0
  165. package/dist/schema/db-schema/mod.js +3 -0
  166. package/dist/schema/db-schema/mod.js.map +1 -0
  167. package/dist/schema/events.d.ts +2 -0
  168. package/dist/schema/events.d.ts.map +1 -0
  169. package/dist/schema/events.js +2 -0
  170. package/dist/schema/events.js.map +1 -0
  171. package/dist/schema/mod.d.ts +5 -3
  172. package/dist/schema/mod.d.ts.map +1 -1
  173. package/dist/schema/mod.js +5 -3
  174. package/dist/schema/mod.js.map +1 -1
  175. package/dist/schema/schema-helpers.d.ts.map +1 -1
  176. package/dist/schema/schema-helpers.js +1 -1
  177. package/dist/schema/schema-helpers.js.map +1 -1
  178. package/dist/schema/schema.d.ts +30 -23
  179. package/dist/schema/schema.d.ts.map +1 -1
  180. package/dist/schema/schema.js +48 -35
  181. package/dist/schema/schema.js.map +1 -1
  182. package/dist/schema/sqlite-state.d.ts +12 -0
  183. package/dist/schema/sqlite-state.d.ts.map +1 -0
  184. package/dist/schema/sqlite-state.js +36 -0
  185. package/dist/schema/sqlite-state.js.map +1 -0
  186. package/dist/schema/system-tables.d.ts +179 -125
  187. package/dist/schema/system-tables.d.ts.map +1 -1
  188. package/dist/schema/system-tables.js +76 -41
  189. package/dist/schema/system-tables.js.map +1 -1
  190. package/dist/schema/table-def.d.ts +37 -109
  191. package/dist/schema/table-def.d.ts.map +1 -1
  192. package/dist/schema/table-def.js +23 -66
  193. package/dist/schema/table-def.js.map +1 -1
  194. package/dist/schema/view.d.ts +3 -0
  195. package/dist/schema/view.d.ts.map +1 -0
  196. package/dist/schema/view.js +3 -0
  197. package/dist/schema/view.js.map +1 -0
  198. package/dist/schema-management/common.d.ts +7 -7
  199. package/dist/schema-management/common.d.ts.map +1 -1
  200. package/dist/schema-management/common.js.map +1 -1
  201. package/dist/schema-management/migrations.d.ts +6 -6
  202. package/dist/schema-management/migrations.d.ts.map +1 -1
  203. package/dist/schema-management/migrations.js +19 -14
  204. package/dist/schema-management/migrations.js.map +1 -1
  205. package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
  206. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  207. package/dist/schema-management/validate-mutation-defs.js +17 -17
  208. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  209. package/dist/sql-queries/misc.d.ts.map +1 -1
  210. package/dist/sql-queries/sql-queries.d.ts +1 -1
  211. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  212. package/dist/sql-queries/sql-queries.js.map +1 -1
  213. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  214. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  215. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  216. package/dist/sql-queries/types.d.ts +2 -1
  217. package/dist/sql-queries/types.d.ts.map +1 -1
  218. package/dist/sql-queries/types.js.map +1 -1
  219. package/dist/sync/ClientSessionSyncProcessor.d.ts +66 -0
  220. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
  221. package/dist/sync/ClientSessionSyncProcessor.js +209 -0
  222. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
  223. package/dist/sync/index.d.ts +1 -1
  224. package/dist/sync/index.d.ts.map +1 -1
  225. package/dist/sync/index.js +1 -1
  226. package/dist/sync/index.js.map +1 -1
  227. package/dist/sync/next/compact-events.d.ts.map +1 -1
  228. package/dist/sync/next/facts.d.ts +19 -19
  229. package/dist/sync/next/facts.d.ts.map +1 -1
  230. package/dist/sync/next/facts.js +3 -3
  231. package/dist/sync/next/facts.js.map +1 -1
  232. package/dist/sync/next/history-dag-common.d.ts +6 -7
  233. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  234. package/dist/sync/next/history-dag-common.js +4 -2
  235. package/dist/sync/next/history-dag-common.js.map +1 -1
  236. package/dist/sync/next/history-dag.d.ts.map +1 -1
  237. package/dist/sync/next/history-dag.js +2 -2
  238. package/dist/sync/next/history-dag.js.map +1 -1
  239. package/dist/sync/next/rebase-events.d.ts +10 -8
  240. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  241. package/dist/sync/next/rebase-events.js +11 -8
  242. package/dist/sync/next/rebase-events.js.map +1 -1
  243. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  244. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  245. package/dist/sync/next/test/compact-events.test.js +76 -76
  246. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  247. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +29 -29
  248. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  249. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +67 -36
  250. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  251. package/dist/sync/next/test/mod.d.ts +1 -1
  252. package/dist/sync/next/test/mod.d.ts.map +1 -1
  253. package/dist/sync/next/test/mod.js +1 -1
  254. package/dist/sync/next/test/mod.js.map +1 -1
  255. package/dist/sync/sync.d.ts +55 -20
  256. package/dist/sync/sync.d.ts.map +1 -1
  257. package/dist/sync/sync.js +7 -3
  258. package/dist/sync/sync.js.map +1 -1
  259. package/dist/sync/syncstate.d.ts +213 -82
  260. package/dist/sync/syncstate.d.ts.map +1 -1
  261. package/dist/sync/syncstate.js +319 -120
  262. package/dist/sync/syncstate.js.map +1 -1
  263. package/dist/sync/syncstate.test.js +295 -275
  264. package/dist/sync/syncstate.test.js.map +1 -1
  265. package/dist/sync/validate-push-payload.d.ts +2 -2
  266. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  267. package/dist/sync/validate-push-payload.js +2 -2
  268. package/dist/sync/validate-push-payload.js.map +1 -1
  269. package/dist/util.d.ts +2 -2
  270. package/dist/util.d.ts.map +1 -1
  271. package/dist/version.d.ts +1 -1
  272. package/dist/version.d.ts.map +1 -1
  273. package/dist/version.js +1 -1
  274. package/dist/version.js.map +1 -1
  275. package/package.json +6 -6
  276. package/src/__tests__/fixture.ts +36 -15
  277. package/src/adapter-types.ts +111 -74
  278. package/src/debug-info.ts +1 -0
  279. package/src/devtools/devtools-messages-client-session.ts +141 -0
  280. package/src/devtools/devtools-messages-common.ts +115 -0
  281. package/src/devtools/devtools-messages-leader.ts +191 -0
  282. package/src/devtools/devtools-messages.ts +3 -243
  283. package/src/devtools/devtools-sessioninfo.ts +99 -0
  284. package/src/devtools/mod.ts +36 -0
  285. package/src/index.ts +4 -13
  286. package/src/leader-thread/LeaderSyncProcessor.ts +935 -0
  287. package/src/leader-thread/apply-event.ts +173 -0
  288. package/src/leader-thread/connection.ts +54 -9
  289. package/src/leader-thread/eventlog.ts +199 -0
  290. package/src/leader-thread/leader-worker-devtools.ts +212 -189
  291. package/src/leader-thread/make-leader-thread-layer.ts +143 -77
  292. package/src/leader-thread/mod.ts +1 -1
  293. package/src/leader-thread/recreate-db.ts +41 -30
  294. package/src/leader-thread/shutdown-channel.ts +2 -4
  295. package/src/leader-thread/types.ts +95 -51
  296. package/src/materializer-helper.ts +110 -0
  297. package/src/otel.ts +8 -0
  298. package/src/query-builder/api.ts +236 -85
  299. package/src/query-builder/astToSql.ts +232 -0
  300. package/src/query-builder/impl.test.ts +447 -78
  301. package/src/query-builder/impl.ts +209 -144
  302. package/src/query-builder/mod.ts +7 -0
  303. package/src/rehydrate-from-eventlog.ts +114 -0
  304. package/src/schema/EventDef.ts +216 -0
  305. package/src/schema/EventId.test.ts +12 -0
  306. package/src/schema/EventId.ts +75 -15
  307. package/src/schema/LiveStoreEvent.ts +239 -0
  308. package/src/schema/client-document-def.test.ts +239 -0
  309. package/src/schema/client-document-def.ts +444 -0
  310. package/src/schema/db-schema/ast/sqlite.ts +142 -0
  311. package/src/schema/db-schema/ast/validate.ts +13 -0
  312. package/src/schema/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  313. package/src/schema/db-schema/dsl/field-defs.test.ts +35 -0
  314. package/src/schema/db-schema/dsl/field-defs.ts +242 -0
  315. package/src/schema/db-schema/dsl/mod.ts +222 -0
  316. package/src/schema/db-schema/hash.ts +14 -0
  317. package/src/schema/db-schema/mod.ts +2 -0
  318. package/src/schema/events.ts +1 -0
  319. package/src/schema/mod.ts +5 -3
  320. package/src/schema/schema-helpers.ts +1 -1
  321. package/src/schema/schema.ts +84 -62
  322. package/src/schema/sqlite-state.ts +62 -0
  323. package/src/schema/system-tables.ts +68 -50
  324. package/src/schema/table-def.ts +68 -214
  325. package/src/schema/view.ts +2 -0
  326. package/src/schema-management/common.ts +7 -7
  327. package/src/schema-management/migrations.ts +27 -24
  328. package/src/schema-management/validate-mutation-defs.ts +22 -24
  329. package/src/sql-queries/sql-queries.ts +1 -1
  330. package/src/sql-queries/sql-query-builder.ts +1 -2
  331. package/src/sql-queries/types.ts +3 -1
  332. package/src/sync/ClientSessionSyncProcessor.ts +332 -0
  333. package/src/sync/index.ts +1 -1
  334. package/src/sync/next/facts.ts +32 -33
  335. package/src/sync/next/history-dag-common.ts +9 -5
  336. package/src/sync/next/history-dag.ts +2 -2
  337. package/src/sync/next/rebase-events.ts +22 -16
  338. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  339. package/src/sync/next/test/compact-events.test.ts +78 -78
  340. package/src/sync/next/test/event-fixtures.ts +219 -0
  341. package/src/sync/next/test/mod.ts +1 -1
  342. package/src/sync/sync.ts +51 -19
  343. package/src/sync/syncstate.test.ts +335 -308
  344. package/src/sync/syncstate.ts +394 -212
  345. package/src/sync/validate-push-payload.ts +7 -4
  346. package/src/version.ts +1 -1
  347. package/tmp/pack.tgz +0 -0
  348. package/tsconfig.json +2 -1
  349. package/dist/derived-mutations.d.ts +0 -109
  350. package/dist/derived-mutations.d.ts.map +0 -1
  351. package/dist/derived-mutations.js +0 -54
  352. package/dist/derived-mutations.js.map +0 -1
  353. package/dist/derived-mutations.test.d.ts +0 -2
  354. package/dist/derived-mutations.test.d.ts.map +0 -1
  355. package/dist/derived-mutations.test.js +0 -93
  356. package/dist/derived-mutations.test.js.map +0 -1
  357. package/dist/devtools/devtools-bridge.d.ts +0 -12
  358. package/dist/devtools/devtools-bridge.d.ts.map +0 -1
  359. package/dist/devtools/devtools-bridge.js +0 -2
  360. package/dist/devtools/devtools-bridge.js.map +0 -1
  361. package/dist/devtools/index.d.ts +0 -42
  362. package/dist/devtools/index.d.ts.map +0 -1
  363. package/dist/devtools/index.js +0 -48
  364. package/dist/devtools/index.js.map +0 -1
  365. package/dist/init-singleton-tables.d.ts +0 -4
  366. package/dist/init-singleton-tables.d.ts.map +0 -1
  367. package/dist/init-singleton-tables.js +0 -16
  368. package/dist/init-singleton-tables.js.map +0 -1
  369. package/dist/leader-thread/apply-mutation.d.ts +0 -8
  370. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  371. package/dist/leader-thread/apply-mutation.js +0 -95
  372. package/dist/leader-thread/apply-mutation.js.map +0 -1
  373. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  374. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  375. package/dist/leader-thread/leader-sync-processor.js +0 -422
  376. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  377. package/dist/leader-thread/mutationlog.d.ts +0 -23
  378. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  379. package/dist/leader-thread/mutationlog.js +0 -27
  380. package/dist/leader-thread/mutationlog.js.map +0 -1
  381. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  382. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  383. package/dist/leader-thread/pull-queue-set.js +0 -39
  384. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  385. package/dist/mutation.d.ts +0 -13
  386. package/dist/mutation.d.ts.map +0 -1
  387. package/dist/mutation.js +0 -57
  388. package/dist/mutation.js.map +0 -1
  389. package/dist/query-info.d.ts +0 -38
  390. package/dist/query-info.d.ts.map +0 -1
  391. package/dist/query-info.js +0 -7
  392. package/dist/query-info.js.map +0 -1
  393. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  394. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  395. package/dist/rehydrate-from-mutationlog.js +0 -72
  396. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  397. package/dist/schema/MutationEvent.d.ts +0 -191
  398. package/dist/schema/MutationEvent.d.ts.map +0 -1
  399. package/dist/schema/MutationEvent.js +0 -56
  400. package/dist/schema/MutationEvent.js.map +0 -1
  401. package/dist/schema/mutations.d.ts +0 -107
  402. package/dist/schema/mutations.d.ts.map +0 -1
  403. package/dist/schema/mutations.js +0 -42
  404. package/dist/schema/mutations.js.map +0 -1
  405. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  406. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  407. package/dist/sync/client-session-sync-processor.js +0 -131
  408. package/dist/sync/client-session-sync-processor.js.map +0 -1
  409. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  410. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  411. package/src/derived-mutations.test.ts +0 -101
  412. package/src/derived-mutations.ts +0 -166
  413. package/src/devtools/devtools-bridge.ts +0 -13
  414. package/src/devtools/index.ts +0 -48
  415. package/src/init-singleton-tables.ts +0 -24
  416. package/src/leader-thread/apply-mutation.ts +0 -143
  417. package/src/leader-thread/leader-sync-processor.ts +0 -666
  418. package/src/leader-thread/mutationlog.ts +0 -42
  419. package/src/leader-thread/pull-queue-set.ts +0 -58
  420. package/src/mutation.ts +0 -81
  421. package/src/query-info.ts +0 -78
  422. package/src/rehydrate-from-mutationlog.ts +0 -127
  423. package/src/schema/MutationEvent.ts +0 -161
  424. package/src/schema/mutations.ts +0 -192
  425. package/src/sync/client-session-sync-processor.ts +0 -207
  426. package/src/sync/next/test/mutation-fixtures.ts +0 -231
@@ -1,40 +1,38 @@
1
- import { type SqliteAst as __SqliteAst, SqliteDsl } from '@livestore/db-schema'
2
1
  import { Schema } from '@livestore/utils/effect'
3
2
 
4
- import type { FromTable } from './table-def.js'
3
+ import { SqliteDsl } from './db-schema/mod.js'
4
+ import * as EventId from './EventId.js'
5
5
  import { table } from './table-def.js'
6
6
 
7
- /// App DB
7
+ /// Read model DB
8
8
 
9
9
  export const SCHEMA_META_TABLE = '__livestore_schema'
10
10
 
11
- export const schemaMetaTable = table(
12
- SCHEMA_META_TABLE,
13
- {
11
+ export const schemaMetaTable = table({
12
+ name: SCHEMA_META_TABLE,
13
+ columns: {
14
14
  tableName: SqliteDsl.text({ primaryKey: true }),
15
15
  schemaHash: SqliteDsl.integer({ nullable: false }),
16
16
  /** ISO date format */
17
17
  updatedAt: SqliteDsl.text({ nullable: false }),
18
18
  },
19
- { disableAutomaticIdColumn: true },
20
- )
19
+ })
21
20
 
22
- export type SchemaMetaRow = FromTable.RowDecoded<typeof schemaMetaTable>
21
+ export type SchemaMetaRow = typeof schemaMetaTable.Type
23
22
 
24
- export const SCHEMA_MUTATIONS_META_TABLE = '__livestore_schema_mutations'
23
+ export const SCHEMA_EVENT_DEFS_META_TABLE = '__livestore_schema_event_defs'
25
24
 
26
- export const schemaMutationsMetaTable = table(
27
- SCHEMA_MUTATIONS_META_TABLE,
28
- {
29
- mutationName: SqliteDsl.text({ primaryKey: true }),
25
+ export const schemaEventDefsMetaTable = table({
26
+ name: SCHEMA_EVENT_DEFS_META_TABLE,
27
+ columns: {
28
+ eventName: SqliteDsl.text({ primaryKey: true }),
30
29
  schemaHash: SqliteDsl.integer({ nullable: false }),
31
30
  /** ISO date format */
32
31
  updatedAt: SqliteDsl.text({ nullable: false }),
33
32
  },
34
- { disableAutomaticIdColumn: true },
35
- )
33
+ })
36
34
 
37
- export type SchemaMutationsMetaRow = FromTable.RowDecoded<typeof schemaMutationsMetaTable>
35
+ export type SchemaEventDefsMetaRow = typeof schemaEventDefsMetaTable.Type
38
36
 
39
37
  /**
40
38
  * Table which stores SQLite changeset blobs which is used for rolling back
@@ -42,56 +40,76 @@ export type SchemaMutationsMetaRow = FromTable.RowDecoded<typeof schemaMutations
42
40
  */
43
41
  export const SESSION_CHANGESET_META_TABLE = '__livestore_session_changeset'
44
42
 
45
- export const sessionChangesetMetaTable = table(
46
- SESSION_CHANGESET_META_TABLE,
47
- {
43
+ export const sessionChangesetMetaTable = table({
44
+ name: SESSION_CHANGESET_META_TABLE,
45
+ columns: {
48
46
  // TODO bring back primary key
49
- idGlobal: SqliteDsl.integer({}),
50
- idLocal: SqliteDsl.integer({}),
51
- // idGlobal: SqliteDsl.integer({ primaryKey: true }),
52
- // idLocal: SqliteDsl.integer({ primaryKey: true }),
53
- changeset: SqliteDsl.blob({}),
47
+ idGlobal: SqliteDsl.integer({ schema: EventId.GlobalEventId }),
48
+ idClient: SqliteDsl.integer({ schema: EventId.ClientEventId }),
49
+ changeset: SqliteDsl.blob({ nullable: true }),
54
50
  debug: SqliteDsl.json({ nullable: true }),
55
51
  },
56
- { disableAutomaticIdColumn: true },
57
- )
52
+ indexes: [{ columns: ['idGlobal', 'idClient'], name: 'idx_session_changeset_id' }],
53
+ })
58
54
 
59
- export type SessionChangesetMetaRow = FromTable.RowDecoded<typeof sessionChangesetMetaTable>
55
+ export type SessionChangesetMetaRow = typeof sessionChangesetMetaTable.Type
60
56
 
61
- export const systemTables = [schemaMetaTable, schemaMutationsMetaTable, sessionChangesetMetaTable]
57
+ export const LEADER_MERGE_COUNTER_TABLE = '__livestore_leader_merge_counter'
62
58
 
63
- /// Mutation log DB
59
+ export const leaderMergeCounterTable = table({
60
+ name: LEADER_MERGE_COUNTER_TABLE,
61
+ columns: {
62
+ id: SqliteDsl.integer({ primaryKey: true, schema: Schema.Literal(0) }),
63
+ mergeCounter: SqliteDsl.integer({ primaryKey: true }),
64
+ },
65
+ })
64
66
 
65
- export const SyncStatus = Schema.Literal('synced', 'pending', 'error', 'localOnly')
66
- export type SyncStatus = typeof SyncStatus.Type
67
+ export type LeaderMergeCounterRow = typeof leaderMergeCounterTable.Type
68
+
69
+ export const systemTables = [
70
+ schemaMetaTable,
71
+ schemaEventDefsMetaTable,
72
+ sessionChangesetMetaTable,
73
+ leaderMergeCounterTable,
74
+ ]
67
75
 
68
- export const MUTATION_LOG_META_TABLE = 'mutation_log'
76
+ /// Eventlog DB
77
+
78
+ export const SyncStatus = Schema.Literal('synced', 'pending', 'error', 'clientOnly')
79
+ export type SyncStatus = typeof SyncStatus.Type
69
80
 
70
- export const mutationLogMetaTable = table(
71
- MUTATION_LOG_META_TABLE,
72
- {
73
- idGlobal: SqliteDsl.integer({ primaryKey: true }),
74
- idLocal: SqliteDsl.integer({ primaryKey: true }),
75
- parentIdGlobal: SqliteDsl.integer({}),
76
- parentIdLocal: SqliteDsl.integer({}),
77
- mutation: SqliteDsl.text({}),
81
+ export const EVENTLOG_META_TABLE = 'eventlog'
82
+
83
+ export const eventlogMetaTable = table({
84
+ name: EVENTLOG_META_TABLE,
85
+ columns: {
86
+ // TODO Adjust modeling so a global event never needs a client id component
87
+ idGlobal: SqliteDsl.integer({ primaryKey: true, schema: EventId.GlobalEventId }),
88
+ idClient: SqliteDsl.integer({ primaryKey: true, schema: EventId.ClientEventId }),
89
+ parentIdGlobal: SqliteDsl.integer({ schema: EventId.GlobalEventId }),
90
+ parentIdClient: SqliteDsl.integer({ schema: EventId.ClientEventId }),
91
+ name: SqliteDsl.text({}),
78
92
  argsJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Any) }),
93
+ clientId: SqliteDsl.text({}),
94
+ sessionId: SqliteDsl.text({}),
79
95
  schemaHash: SqliteDsl.integer({}),
80
96
  syncMetadataJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Option(Schema.JsonValue)) }),
81
97
  },
82
- { disableAutomaticIdColumn: true, indexes: [] },
83
- )
98
+ indexes: [
99
+ { columns: ['idGlobal'], name: 'idx_eventlog_idGlobal' },
100
+ { columns: ['idGlobal', 'idClient'], name: 'idx_eventlog_id' },
101
+ ],
102
+ })
84
103
 
85
- export type MutationLogMetaRow = FromTable.RowDecoded<typeof mutationLogMetaTable>
104
+ export type EventlogMetaRow = typeof eventlogMetaTable.Type
86
105
 
87
106
  export const SYNC_STATUS_TABLE = '__livestore_sync_status'
88
107
 
89
- export const syncStatusTable = table(
90
- SYNC_STATUS_TABLE,
91
- {
108
+ export const syncStatusTable = table({
109
+ name: SYNC_STATUS_TABLE,
110
+ columns: {
92
111
  head: SqliteDsl.integer({ primaryKey: true }),
93
112
  },
94
- { disableAutomaticIdColumn: true },
95
- )
113
+ })
96
114
 
97
- export type SyncStatusRow = FromTable.RowDecoded<typeof syncStatusTable>
115
+ export type SyncStatusRow = typeof syncStatusTable.Type
@@ -1,31 +1,30 @@
1
- import type { Nullable, PrettifyFlat } from '@livestore/db-schema'
2
- import { SqliteDsl } from '@livestore/db-schema'
3
- import { shouldNeverHappen } from '@livestore/utils'
4
- import { ReadonlyRecord, Schema } from '@livestore/utils/effect'
1
+ import { type Nullable } from '@livestore/utils'
2
+ import type { Schema, Types } from '@livestore/utils/effect'
5
3
 
6
- import type { DerivedMutationHelperFns } from '../derived-mutations.js'
7
- import { makeDerivedMutationDefsForTable } from '../derived-mutations.js'
8
4
  import type { QueryBuilder } from '../query-builder/mod.js'
9
- import { makeQueryBuilder } from '../query-builder/mod.js'
5
+ import { makeQueryBuilder, QueryBuilderAstSymbol, QueryBuilderTypeId } from '../query-builder/mod.js'
6
+ import { SqliteDsl } from './db-schema/mod.js'
10
7
 
11
8
  export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl
12
9
 
13
- export { SqliteDsl } from '@livestore/db-schema'
14
-
15
10
  export type StateType = 'singleton' | 'dynamic'
16
11
 
17
12
  export type DefaultSqliteTableDef = SqliteDsl.TableDefinition<string, SqliteDsl.Columns>
18
13
  export type DefaultSqliteTableDefConstrained = SqliteDsl.TableDefinition<string, SqliteDsl.ConstraintColumns>
19
14
 
15
+ // TODO use to hide table def internals
16
+ export const TableDefInternalsSymbol = Symbol('TableDefInternals')
17
+ export type TableDefInternalsSymbol = typeof TableDefInternalsSymbol
18
+
20
19
  export type TableDefBase<
21
20
  TSqliteDef extends DefaultSqliteTableDef = DefaultSqliteTableDefConstrained,
22
21
  TOptions extends TableOptions = TableOptions,
23
- TSchema = SqliteDsl.StructSchemaForColumns<TSqliteDef['columns']>,
24
22
  > = {
25
23
  sqliteDef: TSqliteDef
26
24
  options: TOptions
27
25
  // Derived from `sqliteDef`, so only exposed for convenience
28
- schema: TSchema
26
+ rowSchema: SqliteDsl.StructSchemaForColumns<TSqliteDef['columns']>
27
+ insertSchema: SqliteDsl.InsertStructSchemaForColumns<TSqliteDef['columns']>
29
28
  }
30
29
 
31
30
  export type TableDef<
@@ -47,243 +46,79 @@ export type TableDef<
47
46
  sqliteDef: TSqliteDef
48
47
  options: TOptions
49
48
  // Derived from `sqliteDef`, so only exposed for convenience
50
- schema: TSchema
51
- query: QueryBuilder<ReadonlyArray<Schema.Schema.Type<TSchema>>, TableDef<TSqliteDef & {}, TOptions>>
52
- } & (TOptions['deriveMutations']['enabled'] extends true
53
- ? DerivedMutationHelperFns<TSqliteDef['columns'], TOptions>
54
- : {})
49
+ rowSchema: TSchema
50
+ insertSchema: SqliteDsl.InsertStructSchemaForColumns<TSqliteDef['columns']>
51
+ // query: QueryBuilder<ReadonlyArray<Schema.Schema.Type<TSchema>>, TableDefBase<TSqliteDef & {}, TOptions>>
52
+ readonly Type: Schema.Schema.Type<TSchema>
53
+ readonly Encoded: Schema.Schema.Encoded<TSchema>
54
+ } & QueryBuilder<ReadonlyArray<Schema.Schema.Type<TSchema>>, TableDefBase<TSqliteDef & {}, TOptions>>
55
55
 
56
56
  export type TableOptionsInput = Partial<{
57
57
  indexes: SqliteDsl.Index[]
58
- disableAutomaticIdColumn: boolean
59
- isSingleton: boolean
60
- deriveMutations:
61
- | boolean
62
- | {
63
- enabled: true
64
- localOnly?: boolean
65
- }
66
58
  }>
67
59
 
68
- type ToColumns<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> =
69
- TColumns extends SqliteDsl.Columns
70
- ? TColumns
71
- : TColumns extends SqliteDsl.ColumnDefinition<any, any>
72
- ? { value: TColumns }
73
- : never
74
-
75
- type ValidateTableOptionsInput<
76
- TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>,
77
- TOptionsInput extends TableOptionsInput,
78
- TPassthroughIfValid,
79
- > =
80
- SqliteDsl.FromColumns.RequiresInsertValues<ToColumns<TColumns>> extends true
81
- ? TOptionsInput['isSingleton'] extends true
82
- ? 'Error: To use `isSingleton: true` with this table, each column must have a default value or be nullable'
83
- : TPassthroughIfValid
84
- : TPassthroughIfValid
60
+ export namespace TableDef {
61
+ export type Any = TableDef<any, any>
62
+ }
85
63
 
86
64
  export type TableOptions = {
87
- /**
88
- * Setting this to true will have the following consequences:
89
- * - An `id` column will be added with `primaryKey: true` and `"singleton"` as default value and only allowed value
90
- * - LiveStore will automatically create the singleton row when booting up
91
- * - LiveStore will fail if there is already a column defined with `primaryKey: true`
92
- *
93
- * @default false
94
- */
95
- readonly isSingleton: boolean
96
-
97
- readonly disableAutomaticIdColumn: boolean
98
-
99
- /**
100
- * Setting this to true will automatically derive insert, update and delete mutations for this table. Example:
101
- *
102
- * ```ts
103
- * const todos = table('todos', { ... }, { deriveMutations: true })
104
- * todos.insert({ id: '1', text: 'Hello' })
105
- * ```
106
- *
107
- * This is also a prerequisite for using the `useRow`, `useAtom` and `rowQuery` APIs.
108
- *
109
- * Important: When using this option, make sure you're following the "Rules of mutations" for the table schema.
110
- */
111
- readonly deriveMutations:
112
- | { enabled: false }
113
- | {
114
- enabled: true
115
- /**
116
- * When set to true, the mutations won't be synced over the network
117
- */
118
- localOnly: boolean
119
- }
120
-
121
65
  /** Derived based on whether the table definition has one or more columns (besides the `id` column) */
122
- readonly isSingleColumn: boolean
123
-
124
- /**
125
- * Derived based on whether the table definition has one or more columns (besides the `id` column) that require
126
- * insert values (i.e. are not nullable and don't have a default value)
127
- *
128
- * `isSingleton` tables always imply `requiresInsertValues: false`
129
- */
130
- readonly requiredInsertColumnNames: string
66
+ readonly isClientDocumentTable: boolean
131
67
  }
132
68
 
133
69
  export const table = <
134
70
  TName extends string,
135
71
  TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>,
136
- TOptionsInput extends TableOptionsInput = TableOptionsInput,
72
+ const TOptionsInput extends TableOptionsInput = TableOptionsInput,
137
73
  >(
138
- name: TName,
139
- columnOrColumns: TColumns,
140
- options?: TOptionsInput,
141
- ): ValidateTableOptionsInput<
142
- TColumns,
143
- TOptionsInput,
144
- TableDef<
145
- SqliteTableDefForInput<TName, TColumns, WithDefaults<TOptionsInput, TColumns>>,
146
- WithDefaults<TOptionsInput, TColumns>
147
- >
148
- > => {
74
+ args: {
75
+ name: TName
76
+ columns: TColumns
77
+ } & Partial<TOptionsInput>,
78
+ ): TableDef<SqliteTableDefForInput<TName, TColumns>, WithDefaults<TColumns>> => {
79
+ const { name, columns: columnOrColumns, ...options } = args
149
80
  const tablePath = name
150
81
 
151
82
  const options_: TableOptions = {
152
- isSingleton: options?.isSingleton ?? false,
153
- disableAutomaticIdColumn: options?.disableAutomaticIdColumn ?? false,
154
- deriveMutations:
155
- options?.deriveMutations === true
156
- ? { enabled: true as const, localOnly: false }
157
- : options?.deriveMutations === false
158
- ? { enabled: false as const }
159
- : options?.deriveMutations === undefined
160
- ? { enabled: false as const }
161
- : { enabled: true as const, localOnly: options.deriveMutations.localOnly ?? false },
162
- isSingleColumn: SqliteDsl.isColumnDefinition(columnOrColumns) === true,
163
- requiredInsertColumnNames: 'type-level-only',
83
+ isClientDocumentTable: false,
164
84
  }
165
85
 
166
86
  const columns = (
167
87
  SqliteDsl.isColumnDefinition(columnOrColumns) ? { value: columnOrColumns } : columnOrColumns
168
88
  ) as SqliteDsl.Columns
169
89
 
170
- if (options_.disableAutomaticIdColumn === true) {
171
- if (columns.id === undefined && options_.isSingleton === true) {
172
- shouldNeverHappen(
173
- `Cannot create table ${name} with "isSingleton: true" because there is no column with name "id" and "disableAutomaticIdColumn: true" is set`,
174
- )
175
- }
176
- } else if (columns.id === undefined && ReadonlyRecord.some(columns, (_) => _.primaryKey === true) === false) {
177
- if (options_.isSingleton) {
178
- columns.id = SqliteDsl.text({ schema: Schema.Literal('singleton'), primaryKey: true, default: 'singleton' })
179
- } else {
180
- columns.id = SqliteDsl.text({ primaryKey: true })
181
- }
182
- }
183
-
184
90
  const sqliteDef = SqliteDsl.table(tablePath, columns, options?.indexes ?? [])
185
91
 
186
- // TODO also enforce this on the type level
187
- if (options_.isSingleton) {
188
- for (const column of sqliteDef.ast.columns) {
189
- if (column.nullable === false && column.default._tag === 'None') {
190
- shouldNeverHappen(
191
- `When creating a singleton table, each column must be either nullable or have a default value. Column '${column.name}' is neither.`,
192
- )
193
- }
194
- }
195
- }
196
-
197
- const isSingleColumn = SqliteDsl.isColumnDefinition(columnOrColumns) === true
92
+ const rowSchema = SqliteDsl.structSchemaForTable(sqliteDef)
93
+ const insertSchema = SqliteDsl.insertStructSchemaForTable(sqliteDef)
94
+ const tableDef = {
95
+ sqliteDef,
96
+ options: options_,
97
+ rowSchema,
98
+ insertSchema,
99
+ } satisfies TableDefBase
198
100
 
199
- const schema = SqliteDsl.structSchemaForTable(sqliteDef)
200
- const tableDef = { sqliteDef, options: options_, schema } satisfies TableDefBase
201
101
  const query = makeQueryBuilder(tableDef)
202
- // const tableDef = { ...tableDefBase, query } satisfies TableDef
102
+ // tableDef.query = query
203
103
 
204
104
  // NOTE we're currently patching the existing tableDef object
205
105
  // as it's being used as part of the query builder API
206
- // @ts-expect-error TODO properly implement this
207
- tableDef.query = query
208
-
209
- if (tableHasDerivedMutations(tableDef)) {
210
- const derivedMutationDefs = makeDerivedMutationDefsForTable(tableDef)
211
-
212
- tableDef.insert = (valuesOrValue: any) => {
213
- if (isSingleColumn && options_.isSingleton) {
214
- return derivedMutationDefs.insert({ id: 'singleton', value: { value: valuesOrValue } })
215
- } else {
216
- return derivedMutationDefs.insert(valuesOrValue as any)
217
- }
218
- }
219
-
220
- tableDef.update = (argsOrValues: any) => {
221
- if (isSingleColumn && options_.isSingleton) {
222
- return derivedMutationDefs.update({ where: { id: 'singleton' }, values: { value: argsOrValues } as any })
223
- } else {
224
- return derivedMutationDefs.update(argsOrValues as any)
225
- }
226
- }
227
-
228
- tableDef.delete = (args: any) => derivedMutationDefs.delete(args)
106
+ for (const key of Object.keys(query)) {
107
+ // @ts-expect-error TODO properly implement this
108
+ tableDef[key] = query[key]
229
109
  }
230
110
 
231
- return tableDef as any
232
- }
233
-
234
- export const tableHasDerivedMutations = <TTableDef extends TableDefBase>(
235
- tableDef: TTableDef,
236
- ): tableDef is TTableDef & {
237
- options: { deriveMutations: { enabled: true; localOnly: boolean } }
238
- } & DerivedMutationHelperFns<TTableDef['sqliteDef']['columns'], TTableDef['options']> =>
239
- tableDef.options.deriveMutations.enabled === true
111
+ // @ts-expect-error TODO properly type this
112
+ tableDef[QueryBuilderAstSymbol] = query[QueryBuilderAstSymbol]
113
+ // @ts-expect-error TODO properly type this
114
+ tableDef[QueryBuilderTypeId] = query[QueryBuilderTypeId]
240
115
 
241
- export const tableIsSingleton = <TTableDef extends TableDefBase>(
242
- tableDef: TTableDef,
243
- ): tableDef is TTableDef & { options: { isSingleton: true } } => tableDef.options.isSingleton === true
244
-
245
- type SqliteTableDefForInput<
246
- TName extends string,
247
- TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>,
248
- TOptions extends TableOptions,
249
- > = SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<ToColumns<TColumns>, TOptions>>>
250
-
251
- type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns &
252
- ('id' extends keyof TColumns
253
- ? {}
254
- : TOptions['disableAutomaticIdColumn'] extends true
255
- ? {}
256
- : TOptions['isSingleton'] extends true
257
- ? {
258
- id: SqliteDsl.ColumnDefinition<'singleton', 'singleton'>
259
- }
260
- : {
261
- id: SqliteDsl.ColumnDefinition<string, string>
262
- })
263
-
264
- type WithDefaults<
265
- TOptionsInput extends TableOptionsInput,
266
- TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>,
267
- > = {
268
- isSingleton: TOptionsInput['isSingleton'] extends true ? true : false
269
- disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false
270
- deriveMutations: TOptionsInput['deriveMutations'] extends true
271
- ? { enabled: true; localOnly: boolean }
272
- : TOptionsInput['deriveMutations'] extends false
273
- ? { enabled: false }
274
- : TOptionsInput['deriveMutations'] extends { enabled: true; localOnly?: boolean }
275
- ? {
276
- enabled: true
277
- localOnly: TOptionsInput['deriveMutations']['localOnly'] extends true ? true : false
278
- }
279
- : never
280
- isSingleColumn: SqliteDsl.IsSingleColumn<TColumns>
281
- requiredInsertColumnNames: SqliteDsl.FromColumns.RequiredInsertColumnNames<ToColumns<TColumns>>
116
+ return tableDef as any
282
117
  }
283
118
 
284
119
  export namespace FromTable {
285
120
  // TODO this sometimes doesn't preserve the order of columns
286
- export type RowDecoded<TTableDef extends TableDefBase> = PrettifyFlat<
121
+ export type RowDecoded<TTableDef extends TableDefBase> = Types.Simplify<
287
122
  Nullable<Pick<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>> &
288
123
  Omit<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>
289
124
  >
@@ -302,7 +137,7 @@ export namespace FromTable {
302
137
  >
303
138
  }
304
139
 
305
- export type RowEncoded<TTableDef extends TableDefBase> = PrettifyFlat<
140
+ export type RowEncoded<TTableDef extends TableDefBase> = Types.Simplify<
306
141
  Nullable<Pick<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>> &
307
142
  Omit<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>
308
143
  >
@@ -314,7 +149,7 @@ export namespace FromTable {
314
149
 
315
150
  export namespace FromColumns {
316
151
  // TODO this sometimes doesn't preserve the order of columns
317
- export type RowDecoded<TColumns extends SqliteDsl.Columns> = PrettifyFlat<
152
+ export type RowDecoded<TColumns extends SqliteDsl.Columns> = Types.Simplify<
318
153
  Nullable<Pick<RowDecodedAll<TColumns>, NullableColumnNames<TColumns>>> &
319
154
  Omit<RowDecodedAll<TColumns>, NullableColumnNames<TColumns>>
320
155
  >
@@ -323,7 +158,7 @@ export namespace FromColumns {
323
158
  [K in keyof TColumns]: Schema.Schema.Type<TColumns[K]['schema']>
324
159
  }
325
160
 
326
- export type RowEncoded<TColumns extends SqliteDsl.Columns> = PrettifyFlat<
161
+ export type RowEncoded<TColumns extends SqliteDsl.Columns> = Types.Simplify<
327
162
  Nullable<Pick<RowEncodeNonNullable<TColumns>, NullableColumnNames<TColumns>>> &
328
163
  Omit<RowEncodeNonNullable<TColumns>, NullableColumnNames<TColumns>>
329
164
  >
@@ -341,3 +176,22 @@ export namespace FromColumns {
341
176
 
342
177
  export type InsertRowDecoded<TColumns extends SqliteDsl.Columns> = SqliteDsl.FromColumns.InsertRowDecoded<TColumns>
343
178
  }
179
+
180
+ type SqliteTableDefForInput<
181
+ TName extends string,
182
+ TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>,
183
+ > = SqliteDsl.TableDefinition<TName, PrettifyFlat<ToColumns<TColumns>>>
184
+
185
+ type WithDefaults<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> = {
186
+ isClientDocumentTable: false
187
+ requiredInsertColumnNames: SqliteDsl.FromColumns.RequiredInsertColumnNames<ToColumns<TColumns>>
188
+ }
189
+
190
+ export type PrettifyFlat<T> = T extends infer U ? { [K in keyof U]: U[K] } : never
191
+
192
+ type ToColumns<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> =
193
+ TColumns extends SqliteDsl.Columns
194
+ ? TColumns
195
+ : TColumns extends SqliteDsl.ColumnDefinition<any, any>
196
+ ? { value: TColumns }
197
+ : never
@@ -0,0 +1,2 @@
1
+ export * as SQLite from './sqlite-state.js'
2
+ export { QueryBuilderAstSymbol, QueryBuilderTypeId } from '../query-builder/mod.js'
@@ -1,4 +1,4 @@
1
- import type { SynchronousDatabase } from '../adapter-types.js'
1
+ import type { SqliteDb } from '../adapter-types.js'
2
2
  import type { ParamsObject } from '../util.js'
3
3
  import { prepareBindValues } from '../util.js'
4
4
 
@@ -6,7 +6,7 @@ import { prepareBindValues } from '../util.js'
6
6
  // will require proper scope-aware cleanup etc (for testing and apps with multiple LiveStore instances)
7
7
  // const cachedStmts = new Map<string, PreparedStatement>()
8
8
 
9
- export const dbExecute = (db: SynchronousDatabase, queryStr: string, bindValues?: ParamsObject) => {
9
+ export const dbExecute = (db: SqliteDb, queryStr: string, bindValues?: ParamsObject) => {
10
10
  // let stmt = cachedStmts.get(queryStr)
11
11
  // if (!stmt) {
12
12
  const stmt = db.prepare(queryStr)
@@ -20,7 +20,7 @@ export const dbExecute = (db: SynchronousDatabase, queryStr: string, bindValues?
20
20
  stmt.finalize()
21
21
  }
22
22
 
23
- export const dbSelect = <T>(db: SynchronousDatabase, queryStr: string, bindValues?: ParamsObject) => {
23
+ export const dbSelect = <T>(db: SqliteDb, queryStr: string, bindValues?: ParamsObject) => {
24
24
  // let stmt = cachedStmts.get(queryStr)
25
25
  // if (!stmt) {
26
26
  const stmt = db.prepare(queryStr)
@@ -33,12 +33,12 @@ export const dbSelect = <T>(db: SynchronousDatabase, queryStr: string, bindValue
33
33
  }
34
34
 
35
35
  export interface SchemaManager {
36
- getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>
36
+ getEventDefInfos: () => ReadonlyArray<EventDefInfo>
37
37
 
38
- setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void
38
+ setEventDefInfo: (eventDefInfo: EventDefInfo) => void
39
39
  }
40
40
 
41
- export type MutationDefInfo = {
42
- mutationName: string
41
+ export type EventDefInfo = {
42
+ eventName: string
43
43
  schemaHash: number
44
44
  }