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

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,51 +1,97 @@
1
- import type { GetValForKey } from '@livestore/utils'
1
+ import type { GetValForKey, SingleOrReadonlyArray } from '@livestore/utils'
2
2
  import { type Option, Predicate, type Schema } from '@livestore/utils/effect'
3
3
 
4
4
  import type { SessionIdSymbol } from '../adapter-types.js'
5
- import type { QueryInfo } from '../query-info.js'
6
- import type { DbSchema } from '../schema/mod.js'
7
- import type { SqliteDsl } from '../schema/table-def.js'
5
+ import type { ClientDocumentTableDef } from '../schema/client-document-def.js'
6
+ import type { SqliteDsl } from '../schema/db-schema/mod.js'
7
+ import type { State } from '../schema/mod.js'
8
8
  import type { SqlValue } from '../util.js'
9
9
 
10
- export type QueryBuilderAst = QueryBuilderAst.SelectQuery | QueryBuilderAst.CountQuery | QueryBuilderAst.RowQuery
10
+ export type QueryBuilderAst =
11
+ | QueryBuilderAst.SelectQuery
12
+ | QueryBuilderAst.CountQuery
13
+ | QueryBuilderAst.RowQuery
14
+ | QueryBuilderAst.InsertQuery
15
+ | QueryBuilderAst.UpdateQuery
16
+ | QueryBuilderAst.DeleteQuery
11
17
 
12
18
  export namespace QueryBuilderAst {
13
- export type SelectQuery = {
19
+ export interface SelectQuery {
14
20
  readonly _tag: 'SelectQuery'
15
21
  readonly columns: string[]
16
- readonly pickFirst: false | { fallback: () => any }
22
+ readonly pickFirst: false | { fallback: () => any } | 'no-fallback'
17
23
  readonly select: {
18
24
  columns: ReadonlyArray<string>
19
25
  }
20
26
  readonly orderBy: ReadonlyArray<OrderBy>
21
27
  readonly offset: Option.Option<number>
22
28
  readonly limit: Option.Option<number>
23
- readonly tableDef: DbSchema.TableDefBase
29
+ readonly tableDef: State.SQLite.TableDefBase
24
30
  readonly where: ReadonlyArray<QueryBuilderAst.Where>
25
31
  readonly resultSchemaSingle: Schema.Schema<any>
26
32
  }
27
33
 
28
- export type CountQuery = {
34
+ export interface CountQuery {
29
35
  readonly _tag: 'CountQuery'
30
- readonly tableDef: DbSchema.TableDefBase
36
+ readonly tableDef: State.SQLite.TableDefBase
31
37
  readonly where: ReadonlyArray<QueryBuilderAst.Where>
32
38
  readonly resultSchema: Schema.Schema<number, ReadonlyArray<{ count: number }>>
33
39
  }
34
40
 
35
- export type RowQuery = {
41
+ export interface RowQuery {
36
42
  readonly _tag: 'RowQuery'
37
- readonly tableDef: DbSchema.TableDefBase
43
+ readonly tableDef: State.SQLite.ClientDocumentTableDef.Any
38
44
  readonly id: string | SessionIdSymbol
39
- readonly insertValues: Record<string, unknown>
45
+ readonly explicitDefaultValues: Record<string, unknown>
40
46
  }
41
47
 
42
- export type Where = {
48
+ export interface InsertQuery {
49
+ readonly _tag: 'InsertQuery'
50
+ readonly tableDef: State.SQLite.TableDefBase
51
+ readonly values: Record<string, unknown>
52
+ readonly onConflict: OnConflict | undefined
53
+ readonly returning: string[] | undefined
54
+ readonly resultSchema: Schema.Schema<any>
55
+ }
56
+
57
+ export interface OnConflict {
58
+ /** Conflicting column name */
59
+ readonly targets: string[]
60
+ readonly action:
61
+ | { readonly _tag: 'ignore' }
62
+ | { readonly _tag: 'replace' }
63
+ | {
64
+ readonly _tag: 'update'
65
+ readonly update: Record<string, unknown>
66
+ }
67
+ }
68
+
69
+ export interface UpdateQuery {
70
+ readonly _tag: 'UpdateQuery'
71
+ readonly tableDef: State.SQLite.TableDefBase
72
+ readonly values: Record<string, unknown>
73
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>
74
+ readonly returning: string[] | undefined
75
+ readonly resultSchema: Schema.Schema<any>
76
+ }
77
+
78
+ export interface DeleteQuery {
79
+ readonly _tag: 'DeleteQuery'
80
+ readonly tableDef: State.SQLite.TableDefBase
81
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>
82
+ readonly returning: string[] | undefined
83
+ readonly resultSchema: Schema.Schema<any>
84
+ }
85
+
86
+ export type WriteQuery = InsertQuery | UpdateQuery | DeleteQuery
87
+
88
+ export interface Where {
43
89
  readonly col: string
44
90
  readonly op: QueryBuilder.WhereOps
45
91
  readonly value: unknown
46
92
  }
47
93
 
48
- export type OrderBy = {
94
+ export interface OrderBy {
49
95
  readonly col: string
50
96
  readonly direction: 'asc' | 'desc'
51
97
  }
@@ -53,27 +99,31 @@ export namespace QueryBuilderAst {
53
99
 
54
100
  export const QueryBuilderAstSymbol = Symbol.for('QueryBuilderAst')
55
101
  export type QueryBuilderAstSymbol = typeof QueryBuilderAstSymbol
56
- export const TypeId = Symbol.for('QueryBuilder')
57
- export type TypeId = typeof TypeId
102
+
103
+ export const QueryBuilderResultSymbol = Symbol.for('QueryBuilderResult')
104
+ export type QueryBuilderResultSymbol = typeof QueryBuilderResultSymbol
105
+
106
+ export const QueryBuilderTypeId = Symbol.for('QueryBuilder')
107
+ export type QueryBuilderTypeId = typeof QueryBuilderTypeId
58
108
 
59
109
  export const isQueryBuilder = (value: unknown): value is QueryBuilder<any, any, any> =>
60
- Predicate.hasProperty(value, TypeId)
110
+ Predicate.hasProperty(value, QueryBuilderTypeId)
61
111
 
62
112
  export type QueryBuilder<
63
113
  TResult,
64
- TTableDef extends DbSchema.TableDefBase,
114
+ TTableDef extends State.SQLite.TableDefBase,
65
115
  /** Used to gradually remove features from the API based on the query context */
66
116
  TWithout extends QueryBuilder.ApiFeature = never,
67
- TQueryInfo extends QueryInfo = QueryInfo.None,
68
117
  > = {
69
- readonly [TypeId]: TypeId
118
+ readonly [QueryBuilderTypeId]: QueryBuilderTypeId
70
119
  readonly [QueryBuilderAstSymbol]: QueryBuilderAst
120
+ readonly ['ResultType']: TResult
71
121
  readonly asSql: () => { query: string; bindValues: SqlValue[] }
72
122
  readonly toString: () => string
73
- } & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout, TQueryInfo>, TWithout>
123
+ } & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout>, TWithout>
74
124
 
75
125
  export namespace QueryBuilder {
76
- export type Any = QueryBuilder<any, any, any, any>
126
+ export type Any = QueryBuilder<any, any, any>
77
127
  export type WhereOps = WhereOps.Equality | WhereOps.Order | WhereOps.Like | WhereOps.In
78
128
 
79
129
  export namespace WhereOps {
@@ -86,9 +136,22 @@ export namespace QueryBuilder {
86
136
  export type MultiValue = In
87
137
  }
88
138
 
89
- export type ApiFeature = 'select' | 'where' | 'count' | 'orderBy' | 'offset' | 'limit' | 'first' | 'row'
139
+ export type ApiFeature =
140
+ | 'select'
141
+ | 'where'
142
+ | 'count'
143
+ | 'orderBy'
144
+ | 'offset'
145
+ | 'limit'
146
+ | 'first'
147
+ | 'row'
148
+ | 'insert'
149
+ | 'update'
150
+ | 'delete'
151
+ | 'returning'
152
+ | 'onConflict'
90
153
 
91
- export type WhereParams<TTableDef extends DbSchema.TableDefBase> = Partial<{
154
+ export type WhereParams<TTableDef extends State.SQLite.TableDefBase> = Partial<{
92
155
  [K in keyof TTableDef['sqliteDef']['columns']]:
93
156
  | TTableDef['sqliteDef']['columns'][K]['schema']['Type']
94
157
  | { op: QueryBuilder.WhereOps.SingleValue; value: TTableDef['sqliteDef']['columns'][K]['schema']['Type'] }
@@ -99,40 +162,31 @@ export namespace QueryBuilder {
99
162
  | undefined
100
163
  }>
101
164
 
102
- export type OrderByParams<TTableDef extends DbSchema.TableDefBase> = ReadonlyArray<{
165
+ export type OrderByParams<TTableDef extends State.SQLite.TableDefBase> = ReadonlyArray<{
103
166
  col: keyof TTableDef['sqliteDef']['columns'] & string
104
167
  direction: 'asc' | 'desc'
105
168
  }>
106
169
 
107
- export type ApiFull<
108
- TResult,
109
- TTableDef extends DbSchema.TableDefBase,
110
- TWithout extends ApiFeature,
111
- TQueryInfo extends QueryInfo,
112
- > = {
170
+ export type ApiFull<TResult, TTableDef extends State.SQLite.TableDefBase, TWithout extends ApiFeature> = {
113
171
  /**
114
172
  * `SELECT *` is the default
115
173
  *
116
174
  * Example:
117
175
  * ```ts
118
176
  * db.todos.select('id', 'text', 'completed')
119
- * db.todos.select('id', { pluck: true })
177
+ * db.todos.select('id')
120
178
  * ```
121
179
  */
122
180
  readonly select: {
123
- <TColumn extends keyof TTableDef['sqliteDef']['columns'] & string, TPluck extends boolean = false>(
124
- column: TColumn,
125
- options?: { pluck: TPluck },
181
+ /** Selects and plucks a single column */
182
+ <TColumn extends keyof TTableDef['sqliteDef']['columns'] & string>(
183
+ pluckColumn: TColumn,
126
184
  ): QueryBuilder<
127
- TPluck extends true
128
- ? ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']>
129
- : ReadonlyArray<{
130
- readonly [K in TColumn]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
131
- }>,
185
+ ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']>,
132
186
  TTableDef,
133
- TWithout | 'row' | 'select',
134
- TQueryInfo
187
+ TWithout | 'row' | 'select' | 'returning' | 'onConflict'
135
188
  >
189
+ /** Select multiple columns */
136
190
  <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(
137
191
  ...columns: TColumns[]
138
192
  // TODO also support arbitrary SQL selects
@@ -142,8 +196,7 @@ export namespace QueryBuilder {
142
196
  readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
143
197
  }>,
144
198
  TTableDef,
145
- TWithout | 'row' | 'select' | 'count',
146
- TQueryInfo
199
+ TWithout | 'row' | 'select' | 'count' | 'returning' | 'onConflict'
147
200
  >
148
201
  }
149
202
 
@@ -163,18 +216,16 @@ export namespace QueryBuilder {
163
216
  * TODO: Also support `OR`
164
217
  */
165
218
  readonly where: {
166
- <TParams extends QueryBuilder.WhereParams<TTableDef>>(
167
- params: TParams,
168
- ): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>
219
+ (params: QueryBuilder.WhereParams<TTableDef>): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
169
220
  <TColName extends keyof TTableDef['sqliteDef']['columns']>(
170
221
  col: TColName,
171
222
  value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type'],
172
- ): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>
223
+ ): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
173
224
  <TColName extends keyof TTableDef['sqliteDef']['columns']>(
174
225
  col: TColName,
175
226
  op: QueryBuilder.WhereOps,
176
227
  value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type'],
177
- ): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>
228
+ ): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
178
229
  }
179
230
 
180
231
  /**
@@ -187,8 +238,7 @@ export namespace QueryBuilder {
187
238
  readonly count: () => QueryBuilder<
188
239
  number,
189
240
  TTableDef,
190
- TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit',
191
- TQueryInfo
241
+ TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit' | 'returning' | 'onConflict'
192
242
  >
193
243
 
194
244
  /**
@@ -201,10 +251,10 @@ export namespace QueryBuilder {
201
251
  <TColName extends keyof TTableDef['sqliteDef']['columns'] & string>(
202
252
  col: TColName,
203
253
  direction: 'asc' | 'desc',
204
- ): QueryBuilder<TResult, TTableDef, TWithout, TQueryInfo>
254
+ ): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>
205
255
  <TParams extends QueryBuilder.OrderByParams<TTableDef>>(
206
256
  params: TParams,
207
- ): QueryBuilder<TResult, TTableDef, TWithout, TQueryInfo>
257
+ ): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>
208
258
  }
209
259
 
210
260
  /**
@@ -215,7 +265,7 @@ export namespace QueryBuilder {
215
265
  */
216
266
  readonly offset: (
217
267
  offset: number,
218
- ) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy', TQueryInfo>
268
+ ) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy' | 'returning' | 'onConflict'>
219
269
 
220
270
  /**
221
271
  * Example:
@@ -225,65 +275,166 @@ export namespace QueryBuilder {
225
275
  */
226
276
  readonly limit: (
227
277
  limit: number,
228
- ) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'limit' | 'offset' | 'first' | 'orderBy', TQueryInfo>
278
+ ) => QueryBuilder<
279
+ TResult,
280
+ TTableDef,
281
+ TWithout | 'row' | 'limit' | 'offset' | 'first' | 'orderBy' | 'returning' | 'onConflict'
282
+ >
229
283
 
230
284
  /**
231
285
  * Example:
232
286
  * ```ts
233
287
  * db.todos.first()
288
+ * db.todos.where('id', '123').first()
234
289
  * ```
290
+ *
291
+ * Query will fail if no rows are returned and no fallback is provided.
235
292
  */
236
- readonly first: <TFallback extends GetSingle<TResult> = never>(options?: {
237
- fallback?: () => TFallback
293
+ readonly first: <TFallback = never>(options?: {
294
+ fallback?: () => TFallback | GetSingle<TResult>
238
295
  }) => QueryBuilder<
239
296
  TFallback | GetSingle<TResult>,
240
297
  TTableDef,
241
- TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where',
242
- TQueryInfo
298
+ TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where' | 'returning' | 'onConflict'
299
+ >
300
+
301
+ /**
302
+ * Insert a new row into the table
303
+ *
304
+ * Example:
305
+ * ```ts
306
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' })
307
+ * ```
308
+ */
309
+ readonly insert: (
310
+ values: TTableDef['insertSchema']['Type'],
311
+ ) => QueryBuilder<
312
+ TResult,
313
+ TTableDef,
314
+ TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
315
+ >
316
+
317
+ /**
318
+ * Example: If the row already exists, it will be ignored.
319
+ * ```ts
320
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'ignore')
321
+ * ```
322
+ *
323
+ * Example: If the row already exists, it will be replaced.
324
+ * ```ts
325
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'replace')
326
+ * ```
327
+ *
328
+ * Example: If the row already exists, it will be updated.
329
+ * ```ts
330
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'update', { text: 'Buy soy milk' })
331
+ * ```
332
+ *
333
+ * NOTE This API doesn't yet support composite primary keys.
334
+ */
335
+ readonly onConflict: {
336
+ <TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(
337
+ target: TTarget,
338
+ action: 'ignore' | 'replace',
339
+ ): QueryBuilder<
340
+ TResult,
341
+ TTableDef,
342
+ TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
343
+ >
344
+ <TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(
345
+ target: TTarget,
346
+ action: 'update',
347
+ updateValues: Partial<TTableDef['rowSchema']['Type']>,
348
+ ): QueryBuilder<
349
+ TResult,
350
+ TTableDef,
351
+ TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
352
+ >
353
+ }
354
+
355
+ /**
356
+ * Similar to the `.select` API but for write queries (insert, update, delete).
357
+ *
358
+ * Example:
359
+ * ```ts
360
+ * db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).returning('id')
361
+ * ```
362
+ */
363
+ readonly returning: <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(
364
+ ...columns: TColumns[]
365
+ ) => QueryBuilder<
366
+ ReadonlyArray<{
367
+ readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
368
+ }>,
369
+ TTableDef
370
+ >
371
+
372
+ /**
373
+ * Update rows in the table that match the where clause
374
+ *
375
+ * Example:
376
+ * ```ts
377
+ * db.todos.update({ status: 'completed' }).where({ id: '123' })
378
+ * ```
379
+ */
380
+ readonly update: (
381
+ values: Partial<TTableDef['rowSchema']['Type']>,
382
+ ) => QueryBuilder<
383
+ TResult,
384
+ TTableDef,
385
+ TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'
243
386
  >
244
387
 
245
388
  /**
246
- * Gets a single row from the table and will create it if it doesn't exist yet.
389
+ * Delete rows from the table that match the where clause
390
+ *
391
+ * Example:
392
+ * ```ts
393
+ * db.todos.delete().where({ status: 'completed' })
394
+ * ```
395
+ *
396
+ * Note that it's generally recommended to do soft-deletes for synced apps.
247
397
  */
248
- // TODO maybe call `getsert`?
249
- readonly row: TTableDef['options']['isSingleton'] extends true
250
- ? () => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>
251
- : TTableDef['options']['deriveMutations']['enabled'] extends false
252
- ? (_: 'Error: Need to enable deriveMutations to use row()') => any
253
- : TTableDef['options']['requiredInsertColumnNames'] extends never
254
- ? (
255
- id: string | SessionIdSymbol,
256
- ) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>
257
- : <TOptions extends RowQuery.RequiredColumnsOptions<TTableDef>>(
258
- id: string | SessionIdSymbol,
259
- opts: TOptions,
260
- ) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>
398
+ readonly delete: () => QueryBuilder<
399
+ TResult,
400
+ TTableDef,
401
+ TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'
402
+ >
261
403
  }
262
404
  }
263
405
 
264
406
  export namespace RowQuery {
265
- export type RequiredColumnsOptions<TTableDef extends DbSchema.TableDefBase> = {
407
+ export type GetOrCreateOptions<TTableDef extends ClientDocumentTableDef.TraitAny> = {
408
+ default: Partial<TTableDef['Value']>
409
+ }
410
+
411
+ // TODO get rid of this
412
+ export type RequiredColumnsOptions<TTableDef extends State.SQLite.TableDefBase> = {
266
413
  /**
267
414
  * Values to be inserted into the row if it doesn't exist yet
268
415
  */
269
- insertValues: Pick<
416
+ explicitDefaultValues: Pick<
270
417
  SqliteDsl.FromColumns.RowDecodedAll<TTableDef['sqliteDef']['columns']>,
271
418
  SqliteDsl.FromColumns.RequiredInsertColumnNames<Omit<TTableDef['sqliteDef']['columns'], 'id'>>
272
419
  >
273
420
  }
274
421
 
275
- export type Result<TTableDef extends DbSchema.TableDefBase> = TTableDef['options']['isSingleColumn'] extends true
276
- ? GetValForKey<SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>, 'value'>
277
- : SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>
422
+ export type Result<TTableDef extends State.SQLite.TableDefBase> = SqliteDsl.FromColumns.RowDecoded<
423
+ TTableDef['sqliteDef']['columns']
424
+ >
425
+
426
+ export type DocumentResult<TTableDef extends ClientDocumentTableDef.Any> = GetValForKey<
427
+ SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>,
428
+ 'value'
429
+ >
278
430
 
279
- export type ResultEncoded<TTableDef extends DbSchema.TableDefBase> =
280
- TTableDef['options']['isSingleColumn'] extends true
431
+ export type ResultEncoded<TTableDef extends State.SQLite.TableDefBase> =
432
+ TTableDef['options']['isClientDocumentTable'] extends true
281
433
  ? GetValForKey<SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>, 'value'>
282
434
  : SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>
435
+
436
+ export type GetIdColumnType<TTableDef extends State.SQLite.TableDefBase> =
437
+ TTableDef['sqliteDef']['columns']['id']['schema']['Type']
283
438
  }
284
439
 
285
440
  type GetSingle<T> = T extends ReadonlyArray<infer U> ? U : never
286
-
287
- // export type QueryBuilderParamRef = { _tag: 'QueryBuilderParamRef' }
288
- // export type QueryBuilderSelectParams = { [key: string]: QueryBuilderSelectParam }
289
- // export type QueryBuilderSelectParam = boolean | ((ref: QueryBuilderParamRef) => QueryBuilder<any, any>)