@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
@@ -0,0 +1,294 @@
1
+ import type { GetValForKey, SingleOrReadonlyArray } from '@livestore/utils';
2
+ import { type Option, type Schema } from '@livestore/utils/effect';
3
+ import type { SessionIdSymbol } from '../../../../adapter-types.js';
4
+ import type { SqlValue } from '../../../../util.js';
5
+ import type { ClientDocumentTableDef } from '../client-document-def.js';
6
+ import type { SqliteDsl } from '../db-schema/mod.js';
7
+ import type { TableDefBase } from '../table-def.js';
8
+ export type QueryBuilderAst = QueryBuilderAst.SelectQuery | QueryBuilderAst.CountQuery | QueryBuilderAst.RowQuery | QueryBuilderAst.InsertQuery | QueryBuilderAst.UpdateQuery | QueryBuilderAst.DeleteQuery;
9
+ export declare namespace QueryBuilderAst {
10
+ interface SelectQuery {
11
+ readonly _tag: 'SelectQuery';
12
+ readonly columns: string[];
13
+ readonly pickFirst: false | {
14
+ fallback: () => any;
15
+ } | 'throws';
16
+ readonly select: {
17
+ columns: ReadonlyArray<string>;
18
+ };
19
+ readonly orderBy: ReadonlyArray<OrderBy>;
20
+ readonly offset: Option.Option<number>;
21
+ readonly limit: Option.Option<number>;
22
+ readonly tableDef: TableDefBase;
23
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
24
+ readonly resultSchemaSingle: Schema.Schema<any>;
25
+ }
26
+ interface CountQuery {
27
+ readonly _tag: 'CountQuery';
28
+ readonly tableDef: TableDefBase;
29
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
30
+ readonly resultSchema: Schema.Schema<number, ReadonlyArray<{
31
+ count: number;
32
+ }>>;
33
+ }
34
+ interface RowQuery {
35
+ readonly _tag: 'RowQuery';
36
+ readonly tableDef: ClientDocumentTableDef.Any;
37
+ readonly id: string | SessionIdSymbol;
38
+ readonly explicitDefaultValues: Record<string, unknown>;
39
+ }
40
+ interface InsertQuery {
41
+ readonly _tag: 'InsertQuery';
42
+ readonly tableDef: TableDefBase;
43
+ readonly values: Record<string, unknown>;
44
+ readonly onConflict: OnConflict | undefined;
45
+ readonly returning: string[] | undefined;
46
+ readonly resultSchema: Schema.Schema<any>;
47
+ }
48
+ interface OnConflict {
49
+ /** Conflicting column name */
50
+ readonly targets: string[];
51
+ readonly action: {
52
+ readonly _tag: 'ignore';
53
+ } | {
54
+ readonly _tag: 'replace';
55
+ } | {
56
+ readonly _tag: 'update';
57
+ readonly update: Record<string, unknown>;
58
+ };
59
+ }
60
+ interface UpdateQuery {
61
+ readonly _tag: 'UpdateQuery';
62
+ readonly tableDef: TableDefBase;
63
+ readonly values: Record<string, unknown>;
64
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
65
+ readonly returning: string[] | undefined;
66
+ readonly resultSchema: Schema.Schema<any>;
67
+ }
68
+ interface DeleteQuery {
69
+ readonly _tag: 'DeleteQuery';
70
+ readonly tableDef: TableDefBase;
71
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
72
+ readonly returning: string[] | undefined;
73
+ readonly resultSchema: Schema.Schema<any>;
74
+ }
75
+ type WriteQuery = InsertQuery | UpdateQuery | DeleteQuery;
76
+ interface Where {
77
+ readonly col: string;
78
+ readonly op: QueryBuilder.WhereOps;
79
+ readonly value: unknown;
80
+ }
81
+ interface OrderBy {
82
+ readonly col: string;
83
+ readonly direction: 'asc' | 'desc';
84
+ }
85
+ }
86
+ export declare const QueryBuilderAstSymbol: unique symbol;
87
+ export type QueryBuilderAstSymbol = typeof QueryBuilderAstSymbol;
88
+ export declare const QueryBuilderResultSymbol: unique symbol;
89
+ export type QueryBuilderResultSymbol = typeof QueryBuilderResultSymbol;
90
+ export declare const QueryBuilderTypeId: unique symbol;
91
+ export type QueryBuilderTypeId = typeof QueryBuilderTypeId;
92
+ export declare const isQueryBuilder: (value: unknown) => value is QueryBuilder<any, any, any>;
93
+ export type QueryBuilder<TResult, TTableDef extends TableDefBase,
94
+ /** Used to gradually remove features from the API based on the query context */
95
+ TWithout extends QueryBuilder.ApiFeature = never> = {
96
+ readonly [QueryBuilderTypeId]: QueryBuilderTypeId;
97
+ readonly [QueryBuilderAstSymbol]: QueryBuilderAst;
98
+ readonly ['ResultType']: TResult;
99
+ readonly asSql: () => {
100
+ query: string;
101
+ bindValues: SqlValue[];
102
+ };
103
+ readonly toString: () => string;
104
+ } & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout>, TWithout>;
105
+ export declare namespace QueryBuilder {
106
+ type Any = QueryBuilder<any, any, any>;
107
+ type WhereOps = WhereOps.Equality | WhereOps.Order | WhereOps.Like | WhereOps.In;
108
+ namespace WhereOps {
109
+ type Equality = '=' | '!=';
110
+ type Order = '<' | '>' | '<=' | '>=';
111
+ type Like = 'LIKE' | 'NOT LIKE' | 'ILIKE' | 'NOT ILIKE';
112
+ type In = 'IN' | 'NOT IN';
113
+ type SingleValue = Equality | Order | Like;
114
+ type MultiValue = In;
115
+ }
116
+ type ApiFeature = 'select' | 'where' | 'count' | 'orderBy' | 'offset' | 'limit' | 'first' | 'row' | 'insert' | 'update' | 'delete' | 'returning' | 'onConflict';
117
+ type WhereParams<TTableDef extends TableDefBase> = Partial<{
118
+ [K in keyof TTableDef['sqliteDef']['columns']]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'] | {
119
+ op: QueryBuilder.WhereOps.SingleValue;
120
+ value: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
121
+ } | {
122
+ op: QueryBuilder.WhereOps.MultiValue;
123
+ value: ReadonlyArray<TTableDef['sqliteDef']['columns'][K]['schema']['Type']>;
124
+ } | undefined;
125
+ }>;
126
+ type OrderByParams<TTableDef extends TableDefBase> = ReadonlyArray<{
127
+ col: keyof TTableDef['sqliteDef']['columns'] & string;
128
+ direction: 'asc' | 'desc';
129
+ }>;
130
+ type ApiFull<TResult, TTableDef extends TableDefBase, TWithout extends ApiFeature> = {
131
+ /**
132
+ * `SELECT *` is the default
133
+ *
134
+ * Example:
135
+ * ```ts
136
+ * db.todos.select('id', 'text', 'completed')
137
+ * db.todos.select('id')
138
+ * ```
139
+ */
140
+ readonly select: {
141
+ /** Selects and plucks a single column */
142
+ <TColumn extends keyof TTableDef['sqliteDef']['columns'] & string>(pluckColumn: TColumn): QueryBuilder<ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']>, TTableDef, TWithout | 'row' | 'select' | 'returning' | 'onConflict'>;
143
+ /** Select multiple columns */
144
+ <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(...columns: TColumns[]): QueryBuilder<ReadonlyArray<{
145
+ readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
146
+ }>, TTableDef, TWithout | 'row' | 'select' | 'count' | 'returning' | 'onConflict'>;
147
+ };
148
+ /**
149
+ * Notes:
150
+ * - All where clauses are `AND`ed together by default.
151
+ * - `null` values only support `=` and `!=` which is translated to `IS NULL` and `IS NOT NULL`.
152
+ *
153
+ * Example:
154
+ * ```ts
155
+ * db.todos.where('completed', true)
156
+ * db.todos.where('completed', '!=', true)
157
+ * db.todos.where({ completed: true })
158
+ * db.todos.where({ completed: { op: '!=', value: true } })
159
+ * ```
160
+ *
161
+ * TODO: Also support `OR`
162
+ */
163
+ readonly where: {
164
+ (params: QueryBuilder.WhereParams<TTableDef>): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>;
165
+ <TColName extends keyof TTableDef['sqliteDef']['columns']>(col: TColName, value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type']): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>;
166
+ <TColName extends keyof TTableDef['sqliteDef']['columns']>(col: TColName, op: QueryBuilder.WhereOps, value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type']): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>;
167
+ };
168
+ /**
169
+ * Example:
170
+ * ```ts
171
+ * db.todos.count()
172
+ * db.todos.count().where('completed', true)
173
+ * ```
174
+ */
175
+ readonly count: () => QueryBuilder<number, TTableDef, TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit' | 'returning' | 'onConflict'>;
176
+ /**
177
+ * Example:
178
+ * ```ts
179
+ * db.todos.orderBy('createdAt', 'desc')
180
+ * ```
181
+ */
182
+ readonly orderBy: {
183
+ <TColName extends keyof TTableDef['sqliteDef']['columns'] & string>(col: TColName, direction: 'asc' | 'desc'): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>;
184
+ <TParams extends QueryBuilder.OrderByParams<TTableDef>>(params: TParams): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>;
185
+ };
186
+ /**
187
+ * Example:
188
+ * ```ts
189
+ * db.todos.offset(10)
190
+ * ```
191
+ */
192
+ readonly offset: (offset: number) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy' | 'returning' | 'onConflict'>;
193
+ /**
194
+ * Example:
195
+ * ```ts
196
+ * db.todos.limit(10)
197
+ * ```
198
+ */
199
+ readonly limit: (limit: number) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'limit' | 'offset' | 'first' | 'orderBy' | 'returning' | 'onConflict'>;
200
+ /**
201
+ * Example:
202
+ * ```ts
203
+ * db.todos.first()
204
+ * db.todos.where('id', '123').first()
205
+ * ```
206
+ *
207
+ * Query will throw if no rows are returned and no fallback is provided.
208
+ */
209
+ readonly first: <TFallback = never>(options?: {
210
+ /** @default 'throws' */
211
+ fallback?: (() => TFallback | GetSingle<TResult>) | 'throws';
212
+ }) => QueryBuilder<TFallback | GetSingle<TResult>, TTableDef, TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where' | 'returning' | 'onConflict'>;
213
+ /**
214
+ * Insert a new row into the table
215
+ *
216
+ * Example:
217
+ * ```ts
218
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' })
219
+ * ```
220
+ */
221
+ readonly insert: (values: TTableDef['insertSchema']['Type']) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'>;
222
+ /**
223
+ * Example: If the row already exists, it will be ignored.
224
+ * ```ts
225
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'ignore')
226
+ * ```
227
+ *
228
+ * Example: If the row already exists, it will be replaced.
229
+ * ```ts
230
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'replace')
231
+ * ```
232
+ *
233
+ * Example: If the row already exists, it will be updated.
234
+ * ```ts
235
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'update', { text: 'Buy soy milk' })
236
+ * ```
237
+ *
238
+ * NOTE This API doesn't yet support composite primary keys.
239
+ */
240
+ readonly onConflict: {
241
+ <TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(target: TTarget, action: 'ignore' | 'replace'): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'>;
242
+ <TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(target: TTarget, action: 'update', updateValues: Partial<TTableDef['rowSchema']['Type']>): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'>;
243
+ };
244
+ /**
245
+ * Similar to the `.select` API but for write queries (insert, update, delete).
246
+ *
247
+ * Example:
248
+ * ```ts
249
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).returning('id')
250
+ * ```
251
+ */
252
+ readonly returning: <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(...columns: TColumns[]) => QueryBuilder<ReadonlyArray<{
253
+ readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
254
+ }>, TTableDef>;
255
+ /**
256
+ * Update rows in the table that match the where clause
257
+ *
258
+ * Example:
259
+ * ```ts
260
+ * db.todos.update({ status: 'completed' }).where({ id: '123' })
261
+ * ```
262
+ */
263
+ readonly update: (values: Partial<TTableDef['rowSchema']['Type']>) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'>;
264
+ /**
265
+ * Delete rows from the table that match the where clause
266
+ *
267
+ * Example:
268
+ * ```ts
269
+ * db.todos.delete().where({ status: 'completed' })
270
+ * ```
271
+ *
272
+ * Note that it's generally recommended to do soft-deletes for synced apps.
273
+ */
274
+ readonly delete: () => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'>;
275
+ };
276
+ }
277
+ export declare namespace RowQuery {
278
+ type GetOrCreateOptions<TTableDef extends ClientDocumentTableDef.TraitAny> = {
279
+ default: Partial<TTableDef['Value']>;
280
+ };
281
+ type RequiredColumnsOptions<TTableDef extends TableDefBase> = {
282
+ /**
283
+ * Values to be inserted into the row if it doesn't exist yet
284
+ */
285
+ explicitDefaultValues: Pick<SqliteDsl.FromColumns.RowDecodedAll<TTableDef['sqliteDef']['columns']>, SqliteDsl.FromColumns.RequiredInsertColumnNames<Omit<TTableDef['sqliteDef']['columns'], 'id'>>>;
286
+ };
287
+ type Result<TTableDef extends TableDefBase> = SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>;
288
+ type DocumentResult<TTableDef extends ClientDocumentTableDef.Any> = GetValForKey<SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>, 'value'>;
289
+ type ResultEncoded<TTableDef extends TableDefBase> = TTableDef['options']['isClientDocumentTable'] extends true ? GetValForKey<SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>, 'value'> : SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>;
290
+ type GetIdColumnType<TTableDef extends TableDefBase> = TTableDef['sqliteDef']['columns']['id']['schema']['Type'];
291
+ }
292
+ type GetSingle<T> = T extends ReadonlyArray<infer U> ? U : never;
293
+ export {};
294
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/query-builder/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Predicate } from '@livestore/utils/effect';
2
+ export const QueryBuilderAstSymbol = Symbol.for('QueryBuilderAst');
3
+ export const QueryBuilderResultSymbol = Symbol.for('QueryBuilderResult');
4
+ export const QueryBuilderTypeId = Symbol.for('QueryBuilder');
5
+ export const isQueryBuilder = (value) => Predicate.hasProperty(value, QueryBuilderTypeId);
6
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/query-builder/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,SAAS,EAAe,MAAM,yBAAyB,CAAA;AAkG7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAGlE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAGxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAG5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAwC,EAAE,CACrF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { SqlValue } from '../../../../util.js';
2
+ import type { QueryBuilderAst } from './api.js';
3
+ export declare const astToSql: (ast: QueryBuilderAst) => {
4
+ query: string;
5
+ bindValues: SqlValue[];
6
+ };
7
+ //# sourceMappingURL=astToSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astToSql.d.ts","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/query-builder/astToSql.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AA6D/C,eAAO,MAAM,QAAQ,GAAI,KAAK,eAAe,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,QAAQ,EAAE,CAAA;CAoKtF,CAAA"}
@@ -0,0 +1,190 @@
1
+ import { shouldNeverHappen } from '@livestore/utils';
2
+ import { Schema } from '@livestore/utils/effect';
3
+ import { SessionIdSymbol } from '../../../../adapter-types.js';
4
+ // Helper functions for SQL generation
5
+ const formatWhereClause = (whereConditions, tableDef, bindValues) => {
6
+ if (whereConditions.length === 0)
7
+ return '';
8
+ const whereClause = whereConditions
9
+ .map(({ col, op, value }) => {
10
+ // Handle NULL values
11
+ if (value === null) {
12
+ if (op !== '=' && op !== '!=') {
13
+ throw new Error(`Unsupported operator for NULL value: ${op}`);
14
+ }
15
+ const opStmt = op === '=' ? 'IS' : 'IS NOT';
16
+ return `${col} ${opStmt} NULL`;
17
+ }
18
+ // Get column definition and encode value
19
+ const colDef = tableDef.sqliteDef.columns[col];
20
+ if (colDef === undefined) {
21
+ throw new Error(`Column ${col} not found`);
22
+ }
23
+ // Handle array values for IN/NOT IN operators
24
+ const isArray = op === 'IN' || op === 'NOT IN';
25
+ if (isArray) {
26
+ // Verify value is an array
27
+ if (!Array.isArray(value)) {
28
+ return shouldNeverHappen(`Expected array value for ${op} operator but got`, value);
29
+ }
30
+ // Handle empty arrays
31
+ if (value.length === 0) {
32
+ return op === 'IN' ? '0=1' : '1=1';
33
+ }
34
+ const encodedValues = value.map((v) => Schema.encodeSync(colDef.schema)(v));
35
+ bindValues.push(...encodedValues);
36
+ const placeholders = encodedValues.map(() => '?').join(', ');
37
+ return `${col} ${op} (${placeholders})`;
38
+ }
39
+ else {
40
+ const encodedValue = Schema.encodeSync(colDef.schema)(value);
41
+ bindValues.push(encodedValue);
42
+ return `${col} ${op} ?`;
43
+ }
44
+ })
45
+ .join(' AND ');
46
+ return `WHERE ${whereClause}`;
47
+ };
48
+ const formatReturningClause = (returning) => {
49
+ if (!returning || returning.length === 0)
50
+ return '';
51
+ return ` RETURNING ${returning.join(', ')}`;
52
+ };
53
+ export const astToSql = (ast) => {
54
+ const bindValues = [];
55
+ // INSERT query
56
+ if (ast._tag === 'InsertQuery') {
57
+ const columns = Object.keys(ast.values);
58
+ const placeholders = columns.map(() => '?').join(', ');
59
+ const encodedValues = Schema.encodeSync(ast.tableDef.insertSchema)(ast.values);
60
+ // Ensure bind values are added in the same order as columns
61
+ columns.forEach((col) => {
62
+ bindValues.push(encodedValues[col]);
63
+ });
64
+ let insertVerb = 'INSERT';
65
+ let conflictClause = ''; // Store the ON CONFLICT clause separately
66
+ // Handle ON CONFLICT clause
67
+ if (ast.onConflict) {
68
+ // Handle REPLACE specifically as it changes the INSERT verb
69
+ if (ast.onConflict.action._tag === 'replace') {
70
+ insertVerb = 'INSERT OR REPLACE';
71
+ // For REPLACE, the conflict target is implied and no further clause is needed
72
+ }
73
+ else {
74
+ // Build the ON CONFLICT clause for IGNORE or UPDATE
75
+ conflictClause = ` ON CONFLICT (${ast.onConflict.targets.join(', ')}) `;
76
+ if (ast.onConflict.action._tag === 'ignore') {
77
+ conflictClause += 'DO NOTHING';
78
+ }
79
+ else {
80
+ // Handle the update record case
81
+ const updateValues = ast.onConflict.action.update;
82
+ const updateCols = Object.keys(updateValues);
83
+ if (updateCols.length === 0) {
84
+ throw new Error('No update columns provided for ON CONFLICT DO UPDATE');
85
+ }
86
+ const updates = updateCols
87
+ .map((col) => {
88
+ const value = updateValues[col];
89
+ // If the value is undefined, use excluded.col
90
+ return value === undefined ? `${col} = excluded.${col}` : `${col} = ?`;
91
+ })
92
+ .join(', ');
93
+ // Add values for the parameters
94
+ updateCols.forEach((col) => {
95
+ const value = updateValues[col];
96
+ if (value !== undefined) {
97
+ const colDef = ast.tableDef.sqliteDef.columns[col];
98
+ if (colDef === undefined) {
99
+ throw new Error(`Column ${col} not found`);
100
+ }
101
+ const encodedValue = Schema.encodeSync(colDef.schema)(value);
102
+ bindValues.push(encodedValue);
103
+ }
104
+ });
105
+ conflictClause += `DO UPDATE SET ${updates}`;
106
+ }
107
+ }
108
+ }
109
+ // Construct the main query part
110
+ let query = `${insertVerb} INTO '${ast.tableDef.sqliteDef.name}' (${columns.join(', ')}) VALUES (${placeholders})`;
111
+ // Append the conflict clause if it was generated (i.e., not for REPLACE)
112
+ query += conflictClause;
113
+ query += formatReturningClause(ast.returning);
114
+ return { query, bindValues };
115
+ }
116
+ // UPDATE query
117
+ if (ast._tag === 'UpdateQuery') {
118
+ const setColumns = Object.keys(ast.values);
119
+ if (setColumns.length === 0) {
120
+ console.warn(`UPDATE query requires at least one column to set (for table ${ast.tableDef.sqliteDef.name}). Running no-op query instead to skip this update query.`);
121
+ return { query: 'SELECT 1', bindValues: [] };
122
+ // return shouldNeverHappen('UPDATE query requires at least one column to set.')
123
+ }
124
+ const encodedValues = Schema.encodeSync(Schema.partial(ast.tableDef.rowSchema))(ast.values);
125
+ // Ensure bind values are added in the same order as columns
126
+ setColumns.forEach((col) => {
127
+ bindValues.push(encodedValues[col]);
128
+ });
129
+ let query = `UPDATE '${ast.tableDef.sqliteDef.name}' SET ${setColumns.map((col) => `${col} = ?`).join(', ')}`;
130
+ const whereClause = formatWhereClause(ast.where, ast.tableDef, bindValues);
131
+ if (whereClause)
132
+ query += ` ${whereClause}`;
133
+ query += formatReturningClause(ast.returning);
134
+ return { query, bindValues };
135
+ }
136
+ // DELETE query
137
+ if (ast._tag === 'DeleteQuery') {
138
+ let query = `DELETE FROM '${ast.tableDef.sqliteDef.name}'`;
139
+ const whereClause = formatWhereClause(ast.where, ast.tableDef, bindValues);
140
+ if (whereClause)
141
+ query += ` ${whereClause}`;
142
+ query += formatReturningClause(ast.returning);
143
+ return { query, bindValues };
144
+ }
145
+ // COUNT query
146
+ if (ast._tag === 'CountQuery') {
147
+ const query = [
148
+ `SELECT COUNT(*) as count FROM '${ast.tableDef.sqliteDef.name}'`,
149
+ formatWhereClause(ast.where, ast.tableDef, bindValues),
150
+ ]
151
+ .filter((clause) => clause.length > 0)
152
+ .join(' ');
153
+ return { query, bindValues };
154
+ }
155
+ // ROW query
156
+ if (ast._tag === 'RowQuery') {
157
+ // Handle the id value by encoding it with the id column schema
158
+ const idColDef = ast.tableDef.sqliteDef.columns.id;
159
+ if (idColDef === undefined) {
160
+ throw new Error('Column id not found for ROW query');
161
+ }
162
+ // NOTE we're not encoding the id if it's the session id symbol, which needs to be taken care of by the caller
163
+ const encodedId = ast.id === SessionIdSymbol ? ast.id : Schema.encodeSync(idColDef.schema)(ast.id);
164
+ return {
165
+ query: `SELECT * FROM '${ast.tableDef.sqliteDef.name}' WHERE id = ?`,
166
+ bindValues: [encodedId],
167
+ };
168
+ }
169
+ // SELECT query
170
+ const columnsStmt = ast.select.columns.length === 0 ? '*' : ast.select.columns.join(', ');
171
+ const selectStmt = `SELECT ${columnsStmt}`;
172
+ const fromStmt = `FROM '${ast.tableDef.sqliteDef.name}'`;
173
+ const whereStmt = formatWhereClause(ast.where, ast.tableDef, bindValues);
174
+ const orderByStmt = ast.orderBy.length > 0
175
+ ? `ORDER BY ${ast.orderBy.map(({ col, direction }) => `${col} ${direction}`).join(', ')}`
176
+ : '';
177
+ const limitStmt = ast.limit._tag === 'Some' ? `LIMIT ?` : '';
178
+ const offsetStmt = ast.offset._tag === 'Some' ? `OFFSET ?` : '';
179
+ // Push offset and limit values in the correct order matching the query string
180
+ if (ast.offset._tag === 'Some')
181
+ bindValues.push(ast.offset.value);
182
+ if (ast.limit._tag === 'Some')
183
+ bindValues.push(ast.limit.value);
184
+ const query = [selectStmt, fromStmt, whereStmt, orderByStmt, offsetStmt, limitStmt]
185
+ .map((clause) => clause.trim())
186
+ .filter((clause) => clause.length > 0)
187
+ .join(' ');
188
+ return { query, bindValues };
189
+ };
190
+ //# sourceMappingURL=astToSql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astToSql.js","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/query-builder/astToSql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import type { TableDefBase } from '../table-def.js';
3
+ import type { QueryBuilder, QueryBuilderAst } from './api.js';
4
+ export declare const makeQueryBuilder: <TResult, TTableDef extends TableDefBase>(tableDef: TTableDef, ast?: QueryBuilderAst) => QueryBuilder<TResult, TTableDef, never>;
5
+ export declare const invalidQueryBuilder: (msg?: string) => never;
6
+ export declare const getResultSchema: (qb: QueryBuilder<any, any, any>) => Schema.Schema<any>;
7
+ //# sourceMappingURL=impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impl.d.ts","sourceRoot":"","sources":["../../../../../src/schema/state/sqlite/query-builder/impl.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG7D,eAAO,MAAM,gBAAgB,GAAI,OAAO,EAAE,SAAS,SAAS,YAAY,EACtE,UAAU,SAAS,EACnB,MAAK,eAAoC,KACxC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CA6PxC,CAAA;AAuCD,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,UAE/C,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CA4ClF,CAAA"}