@livestore/common 0.4.0-dev.9 → 0.5.0-dev.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 (580) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +27 -12
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
  5. package/dist/MaterializationJournal.d.ts +44 -0
  6. package/dist/MaterializationJournal.d.ts.map +1 -0
  7. package/dist/MaterializationJournal.js +112 -0
  8. package/dist/MaterializationJournal.js.map +1 -0
  9. package/dist/StateHead.d.ts +26 -0
  10. package/dist/StateHead.d.ts.map +1 -0
  11. package/dist/StateHead.js +50 -0
  12. package/dist/StateHead.js.map +1 -0
  13. package/dist/WorkerTransportError.d.ts +11 -0
  14. package/dist/WorkerTransportError.d.ts.map +1 -0
  15. package/dist/WorkerTransportError.js +11 -0
  16. package/dist/WorkerTransportError.js.map +1 -0
  17. package/dist/__tests__/fixture.d.ts +1 -1
  18. package/dist/__tests__/fixture.d.ts.map +1 -1
  19. package/dist/__tests__/fixture.js +3 -3
  20. package/dist/__tests__/fixture.js.map +1 -1
  21. package/dist/adapter-types.d.ts +59 -57
  22. package/dist/adapter-types.d.ts.map +1 -1
  23. package/dist/adapter-types.js +31 -22
  24. package/dist/adapter-types.js.map +1 -1
  25. package/dist/bounded-collections.d.ts.map +1 -1
  26. package/dist/bounded-collections.js +6 -4
  27. package/dist/bounded-collections.js.map +1 -1
  28. package/dist/debug-info.d.ts +56 -56
  29. package/dist/debug-info.d.ts.map +1 -1
  30. package/dist/debug-info.js +46 -32
  31. package/dist/debug-info.js.map +1 -1
  32. package/dist/defs.d.ts +9 -9
  33. package/dist/defs.js +2 -2
  34. package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
  35. package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
  36. package/dist/devtools/devtools-compatibility.test.js +16 -0
  37. package/dist/devtools/devtools-compatibility.test.js.map +1 -0
  38. package/dist/devtools/devtools-messages-client-session.d.ts +531 -312
  39. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  40. package/dist/devtools/devtools-messages-client-session.js +86 -67
  41. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  42. package/dist/devtools/devtools-messages-common.d.ts +32 -35
  43. package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
  44. package/dist/devtools/devtools-messages-common.js +12 -14
  45. package/dist/devtools/devtools-messages-common.js.map +1 -1
  46. package/dist/devtools/devtools-messages-leader.d.ts +417 -320
  47. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  48. package/dist/devtools/devtools-messages-leader.js +117 -87
  49. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  50. package/dist/devtools/devtools-sessioninfo.d.ts +28 -17
  51. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
  52. package/dist/devtools/devtools-sessioninfo.js +12 -6
  53. package/dist/devtools/devtools-sessioninfo.js.map +1 -1
  54. package/dist/devtools/mod.d.ts +17 -7
  55. package/dist/devtools/mod.d.ts.map +1 -1
  56. package/dist/devtools/mod.js +19 -8
  57. package/dist/devtools/mod.js.map +1 -1
  58. package/dist/errors.d.ts +52 -46
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +31 -21
  61. package/dist/errors.js.map +1 -1
  62. package/dist/index.d.ts +7 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/leader-thread/LeaderSyncProcessor.d.ts +116 -21
  67. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  68. package/dist/leader-thread/LeaderSyncProcessor.js +596 -470
  69. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  70. package/dist/leader-thread/RejectedPushError.d.ts +138 -0
  71. package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
  72. package/dist/leader-thread/RejectedPushError.js +97 -0
  73. package/dist/leader-thread/RejectedPushError.js.map +1 -0
  74. package/dist/leader-thread/connection.d.ts +1 -0
  75. package/dist/leader-thread/connection.d.ts.map +1 -1
  76. package/dist/leader-thread/connection.js +10 -9
  77. package/dist/leader-thread/connection.js.map +1 -1
  78. package/dist/leader-thread/eventlog.d.ts +20 -15
  79. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  80. package/dist/leader-thread/eventlog.js +80 -20
  81. package/dist/leader-thread/eventlog.js.map +1 -1
  82. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
  83. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  84. package/dist/leader-thread/leader-worker-devtools.js +110 -62
  85. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  86. package/dist/leader-thread/make-leader-thread-layer.d.ts +19 -7
  87. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  88. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  89. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  90. package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
  91. package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
  92. package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
  93. package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
  94. package/dist/leader-thread/materialize-event.d.ts +3 -2
  95. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  96. package/dist/leader-thread/materialize-event.js +32 -9
  97. package/dist/leader-thread/materialize-event.js.map +1 -1
  98. package/dist/leader-thread/mod.d.ts +1 -0
  99. package/dist/leader-thread/mod.d.ts.map +1 -1
  100. package/dist/leader-thread/mod.js +1 -0
  101. package/dist/leader-thread/mod.js.map +1 -1
  102. package/dist/leader-thread/recreate-db.d.ts +2 -2
  103. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  104. package/dist/leader-thread/recreate-db.js +19 -40
  105. package/dist/leader-thread/recreate-db.js.map +1 -1
  106. package/dist/leader-thread/shutdown-channel.d.ts +3 -7
  107. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  108. package/dist/leader-thread/shutdown-channel.js +2 -3
  109. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  110. package/dist/leader-thread/stream-events.d.ts +53 -0
  111. package/dist/leader-thread/stream-events.d.ts.map +1 -0
  112. package/dist/leader-thread/stream-events.js +164 -0
  113. package/dist/leader-thread/stream-events.js.map +1 -0
  114. package/dist/leader-thread/types.d.ts +92 -51
  115. package/dist/leader-thread/types.d.ts.map +1 -1
  116. package/dist/leader-thread/types.js +17 -4
  117. package/dist/leader-thread/types.js.map +1 -1
  118. package/dist/logging.d.ts +15 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +2 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/make-client-session.d.ts +6 -5
  123. package/dist/make-client-session.d.ts.map +1 -1
  124. package/dist/make-client-session.js +10 -7
  125. package/dist/make-client-session.js.map +1 -1
  126. package/dist/materializer-helper.d.ts +6 -7
  127. package/dist/materializer-helper.d.ts.map +1 -1
  128. package/dist/materializer-helper.js +22 -40
  129. package/dist/materializer-helper.js.map +1 -1
  130. package/dist/otel.d.ts +4 -4
  131. package/dist/otel.d.ts.map +1 -1
  132. package/dist/otel.js +8 -8
  133. package/dist/otel.js.map +1 -1
  134. package/dist/rematerialize-from-eventlog.d.ts +3 -3
  135. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  136. package/dist/rematerialize-from-eventlog.js +52 -39
  137. package/dist/rematerialize-from-eventlog.js.map +1 -1
  138. package/dist/schema/EventDef/define.d.ts +161 -0
  139. package/dist/schema/EventDef/define.d.ts.map +1 -0
  140. package/dist/schema/EventDef/define.js +140 -0
  141. package/dist/schema/EventDef/define.js.map +1 -0
  142. package/dist/schema/EventDef/define.test.d.ts +2 -0
  143. package/dist/schema/EventDef/define.test.d.ts.map +1 -0
  144. package/dist/schema/EventDef/define.test.js +23 -0
  145. package/dist/schema/EventDef/define.test.js.map +1 -0
  146. package/dist/schema/EventDef/deprecated.d.ts +94 -0
  147. package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
  148. package/dist/schema/EventDef/deprecated.js +143 -0
  149. package/dist/schema/EventDef/deprecated.js.map +1 -0
  150. package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
  151. package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
  152. package/dist/schema/EventDef/deprecated.test.js +95 -0
  153. package/dist/schema/EventDef/deprecated.test.js.map +1 -0
  154. package/dist/schema/EventDef/event-def.d.ts +110 -0
  155. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  156. package/dist/schema/EventDef/event-def.js +2 -0
  157. package/dist/schema/EventDef/event-def.js.map +1 -0
  158. package/dist/schema/EventDef/facts.d.ts +118 -0
  159. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  160. package/dist/schema/EventDef/facts.js +53 -0
  161. package/dist/schema/EventDef/facts.js.map +1 -0
  162. package/dist/schema/EventDef/materializer.d.ts +155 -0
  163. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  164. package/dist/schema/EventDef/materializer.js +83 -0
  165. package/dist/schema/EventDef/materializer.js.map +1 -0
  166. package/dist/schema/EventDef/mod.d.ts +6 -0
  167. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  168. package/dist/schema/EventDef/mod.js +6 -0
  169. package/dist/schema/EventDef/mod.js.map +1 -0
  170. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  171. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  172. package/dist/schema/EventSequenceNumber/client.js +192 -0
  173. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  174. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  175. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  176. package/dist/schema/EventSequenceNumber/global.js +14 -0
  177. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  178. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  179. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  180. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  181. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  182. package/dist/schema/EventSequenceNumber.test.js +44 -44
  183. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  184. package/dist/schema/LiveStoreEvent/client.d.ts +168 -0
  185. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  186. package/dist/schema/LiveStoreEvent/client.js +179 -0
  187. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  188. package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
  189. package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
  190. package/dist/schema/LiveStoreEvent/client.test.js +120 -0
  191. package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
  192. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  193. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  194. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  195. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  196. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  197. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  198. package/dist/schema/LiveStoreEvent/global.js +31 -0
  199. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  200. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  201. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  202. package/dist/schema/LiveStoreEvent/input.js +26 -0
  203. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  204. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  205. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  206. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  207. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  208. package/dist/schema/events.d.ts +1 -1
  209. package/dist/schema/events.d.ts.map +1 -1
  210. package/dist/schema/events.js +1 -1
  211. package/dist/schema/events.js.map +1 -1
  212. package/dist/schema/mod.d.ts +7 -4
  213. package/dist/schema/mod.d.ts.map +1 -1
  214. package/dist/schema/mod.js +6 -4
  215. package/dist/schema/mod.js.map +1 -1
  216. package/dist/schema/schema.d.ts +16 -1
  217. package/dist/schema/schema.d.ts.map +1 -1
  218. package/dist/schema/schema.js +34 -5
  219. package/dist/schema/schema.js.map +1 -1
  220. package/dist/schema/state/sqlite/client-document-def.d.ts +14 -18
  221. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  222. package/dist/schema/state/sqlite/client-document-def.js +54 -30
  223. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  224. package/dist/schema/state/sqlite/client-document-def.test.js +146 -6
  225. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  226. package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
  227. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
  228. package/dist/schema/state/sqlite/column-annotations.js +13 -15
  229. package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
  230. package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
  231. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
  232. package/dist/schema/state/sqlite/column-def.d.ts +1 -1
  233. package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
  234. package/dist/schema/state/sqlite/column-def.js +132 -57
  235. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  236. package/dist/schema/state/sqlite/column-def.test.js +155 -70
  237. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  238. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
  239. package/dist/schema/state/sqlite/column-spec.js +30 -12
  240. package/dist/schema/state/sqlite/column-spec.js.map +1 -1
  241. package/dist/schema/state/sqlite/column-spec.test.js +26 -17
  242. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
  243. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
  244. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  245. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +15 -6
  246. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  247. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +25 -19
  248. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  249. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +22 -16
  250. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  251. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +28 -17
  252. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
  253. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +14 -12
  254. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  255. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
  256. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  257. package/dist/schema/state/sqlite/mod.d.ts +3 -5
  258. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  259. package/dist/schema/state/sqlite/mod.js +6 -8
  260. package/dist/schema/state/sqlite/mod.js.map +1 -1
  261. package/dist/schema/state/sqlite/persistence.d.ts +11 -0
  262. package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
  263. package/dist/schema/state/sqlite/persistence.js +10 -0
  264. package/dist/schema/state/sqlite/persistence.js.map +1 -0
  265. package/dist/schema/state/sqlite/query-builder/api.d.ts +58 -29
  266. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  267. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  268. package/dist/schema/state/sqlite/query-builder/astToSql.js +105 -24
  269. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  270. package/dist/schema/state/sqlite/query-builder/impl.d.ts +4 -2
  271. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  272. package/dist/schema/state/sqlite/query-builder/impl.js +42 -27
  273. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  274. package/dist/schema/state/sqlite/query-builder/impl.test.js +402 -498
  275. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  276. package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
  277. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
  278. package/dist/schema/state/sqlite/schema-helpers.js +24 -14
  279. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
  280. package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
  281. package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
  282. package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
  283. package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
  284. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +515 -0
  285. package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
  286. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
  287. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
  288. package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
  289. package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
  290. package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
  291. package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
  292. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +678 -0
  293. package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
  294. package/dist/schema/state/sqlite/system-tables/state-tables.js +87 -0
  295. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
  296. package/dist/schema/state/sqlite/table-def.d.ts +19 -20
  297. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  298. package/dist/schema/state/sqlite/table-def.js +54 -4
  299. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  300. package/dist/schema/state/sqlite/table-def.test.js +226 -20
  301. package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
  302. package/dist/schema/unknown-events.d.ts +47 -0
  303. package/dist/schema/unknown-events.d.ts.map +1 -0
  304. package/dist/schema/unknown-events.js +70 -0
  305. package/dist/schema/unknown-events.js.map +1 -0
  306. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
  307. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
  308. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
  309. package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
  310. package/dist/schema-management/common.js +2 -2
  311. package/dist/schema-management/common.js.map +1 -1
  312. package/dist/schema-management/migrations.d.ts +32 -2
  313. package/dist/schema-management/migrations.d.ts.map +1 -1
  314. package/dist/schema-management/migrations.js +38 -6
  315. package/dist/schema-management/migrations.js.map +1 -1
  316. package/dist/schema-management/validate-schema.d.ts +3 -3
  317. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  318. package/dist/schema-management/validate-schema.js +2 -2
  319. package/dist/schema-management/validate-schema.js.map +1 -1
  320. package/dist/session-id-symbol.d.ts +29 -0
  321. package/dist/session-id-symbol.d.ts.map +1 -0
  322. package/dist/session-id-symbol.js +44 -0
  323. package/dist/session-id-symbol.js.map +1 -0
  324. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  325. package/dist/sql-queries/sql-queries.js +26 -16
  326. package/dist/sql-queries/sql-queries.js.map +1 -1
  327. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  328. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  329. package/dist/sql-queries/types.d.ts +6 -7
  330. package/dist/sql-queries/types.d.ts.map +1 -1
  331. package/dist/sql-queries/types.js.map +1 -1
  332. package/dist/sqlite-db-helper.d.ts +21 -1
  333. package/dist/sqlite-db-helper.d.ts.map +1 -1
  334. package/dist/sqlite-db-helper.js +40 -5
  335. package/dist/sqlite-db-helper.js.map +1 -1
  336. package/dist/sqlite-types.d.ts +8 -11
  337. package/dist/sqlite-types.d.ts.map +1 -1
  338. package/dist/sqlite-types.js +3 -3
  339. package/dist/sqlite-types.js.map +1 -1
  340. package/dist/sync/ClientSessionSyncProcessor.d.ts +47 -25
  341. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  342. package/dist/sync/ClientSessionSyncProcessor.js +269 -154
  343. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  344. package/dist/sync/errors.d.ts +12 -51
  345. package/dist/sync/errors.d.ts.map +1 -1
  346. package/dist/sync/errors.js +7 -24
  347. package/dist/sync/errors.js.map +1 -1
  348. package/dist/sync/index.d.ts +2 -0
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +2 -0
  351. package/dist/sync/index.js.map +1 -1
  352. package/dist/sync/mock-sync-backend.d.ts +11 -10
  353. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  354. package/dist/sync/mock-sync-backend.js +97 -74
  355. package/dist/sync/mock-sync-backend.js.map +1 -1
  356. package/dist/sync/mock-sync-backend.test.d.ts +2 -0
  357. package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
  358. package/dist/sync/mock-sync-backend.test.js +49 -0
  359. package/dist/sync/mock-sync-backend.test.js.map +1 -0
  360. package/dist/sync/next/compact-events.d.ts.map +1 -1
  361. package/dist/sync/next/compact-events.js +11 -12
  362. package/dist/sync/next/compact-events.js.map +1 -1
  363. package/dist/sync/next/facts.d.ts +5 -5
  364. package/dist/sync/next/facts.d.ts.map +1 -1
  365. package/dist/sync/next/facts.js +7 -8
  366. package/dist/sync/next/facts.js.map +1 -1
  367. package/dist/sync/next/history-dag-common.d.ts +58 -15
  368. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  369. package/dist/sync/next/history-dag-common.js +219 -9
  370. package/dist/sync/next/history-dag-common.js.map +1 -1
  371. package/dist/sync/next/history-dag.d.ts.map +1 -1
  372. package/dist/sync/next/history-dag.js +12 -11
  373. package/dist/sync/next/history-dag.js.map +1 -1
  374. package/dist/sync/next/rebase-events.d.ts +5 -5
  375. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  376. package/dist/sync/next/rebase-events.js +6 -6
  377. package/dist/sync/next/rebase-events.js.map +1 -1
  378. package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
  379. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  380. package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
  381. package/dist/sync/next/test/compact-events.test.js +2 -2
  382. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  383. package/dist/sync/next/test/event-fixtures.d.ts +9 -9
  384. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  385. package/dist/sync/next/test/event-fixtures.js +12 -12
  386. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  387. package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
  388. package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
  389. package/dist/sync/next/test/history-dag-common.test.js +73 -0
  390. package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
  391. package/dist/sync/sync-backend-kv.d.ts +3 -3
  392. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  393. package/dist/sync/sync-backend-kv.js +6 -4
  394. package/dist/sync/sync-backend-kv.js.map +1 -1
  395. package/dist/sync/sync-backend.d.ts +41 -21
  396. package/dist/sync/sync-backend.d.ts.map +1 -1
  397. package/dist/sync/sync-backend.js +45 -4
  398. package/dist/sync/sync-backend.js.map +1 -1
  399. package/dist/sync/sync.d.ts +23 -2
  400. package/dist/sync/sync.d.ts.map +1 -1
  401. package/dist/sync/syncstate.d.ts +115 -191
  402. package/dist/sync/syncstate.d.ts.map +1 -1
  403. package/dist/sync/syncstate.js +108 -129
  404. package/dist/sync/syncstate.js.map +1 -1
  405. package/dist/sync/syncstate.test.js +289 -161
  406. package/dist/sync/syncstate.test.js.map +1 -1
  407. package/dist/sync/transport-chunking.d.ts +35 -0
  408. package/dist/sync/transport-chunking.d.ts.map +1 -0
  409. package/dist/sync/transport-chunking.js +47 -0
  410. package/dist/sync/transport-chunking.js.map +1 -0
  411. package/dist/sync/validate-push-payload.d.ts +2 -2
  412. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  413. package/dist/sync/validate-push-payload.js +4 -6
  414. package/dist/sync/validate-push-payload.js.map +1 -1
  415. package/dist/testing/event-factory.d.ts +3 -3
  416. package/dist/testing/event-factory.d.ts.map +1 -1
  417. package/dist/testing/event-factory.js +5 -7
  418. package/dist/testing/event-factory.js.map +1 -1
  419. package/dist/util.d.ts +11 -4
  420. package/dist/util.d.ts.map +1 -1
  421. package/dist/util.js +21 -4
  422. package/dist/util.js.map +1 -1
  423. package/dist/version.d.ts +24 -5
  424. package/dist/version.d.ts.map +1 -1
  425. package/dist/version.js +25 -8
  426. package/dist/version.js.map +1 -1
  427. package/package.json +50 -16
  428. package/src/ClientSessionLeaderThreadProxy.ts +27 -12
  429. package/src/MaterializationJournal.ts +184 -0
  430. package/src/StateHead.ts +80 -0
  431. package/src/WorkerTransportError.ts +12 -0
  432. package/src/__tests__/fixture.ts +3 -3
  433. package/src/adapter-types.ts +62 -56
  434. package/src/bounded-collections.ts +6 -5
  435. package/src/debug-info.ts +54 -43
  436. package/src/defs.ts +2 -2
  437. package/src/devtools/devtools-compatibility.test.ts +19 -0
  438. package/src/devtools/devtools-messages-client-session.ts +72 -63
  439. package/src/devtools/devtools-messages-common.ts +18 -22
  440. package/src/devtools/devtools-messages-leader.ts +89 -68
  441. package/src/devtools/devtools-sessioninfo.ts +17 -12
  442. package/src/devtools/mod.ts +15 -7
  443. package/src/errors.ts +58 -38
  444. package/src/index.ts +11 -1
  445. package/src/leader-thread/LeaderSyncProcessor.ts +927 -674
  446. package/src/leader-thread/RejectedPushError.ts +119 -0
  447. package/src/leader-thread/connection.ts +13 -9
  448. package/src/leader-thread/eventlog.ts +114 -41
  449. package/src/leader-thread/leader-worker-devtools.ts +223 -124
  450. package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
  451. package/src/leader-thread/make-leader-thread-layer.ts +170 -82
  452. package/src/leader-thread/materialize-event.ts +51 -16
  453. package/src/leader-thread/mod.ts +1 -0
  454. package/src/leader-thread/recreate-db.ts +26 -61
  455. package/src/leader-thread/shutdown-channel.ts +3 -18
  456. package/src/leader-thread/stream-events.ts +209 -0
  457. package/src/leader-thread/types.ts +77 -65
  458. package/src/logging.ts +15 -0
  459. package/src/make-client-session.ts +16 -10
  460. package/src/materializer-helper.ts +31 -49
  461. package/src/otel.ts +15 -13
  462. package/src/rematerialize-from-eventlog.ts +106 -93
  463. package/src/schema/EventDef/define.test.ts +28 -0
  464. package/src/schema/EventDef/define.ts +218 -0
  465. package/src/schema/EventDef/deprecated.test.ts +122 -0
  466. package/src/schema/EventDef/deprecated.ts +172 -0
  467. package/src/schema/EventDef/event-def.ts +123 -0
  468. package/src/schema/EventDef/facts.ts +135 -0
  469. package/src/schema/EventDef/materializer.ts +172 -0
  470. package/src/schema/EventDef/mod.ts +5 -0
  471. package/src/schema/EventSequenceNumber/client.ts +256 -0
  472. package/src/schema/EventSequenceNumber/global.ts +19 -0
  473. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  474. package/src/schema/EventSequenceNumber.test.ts +72 -53
  475. package/src/schema/LiveStoreEvent/client.test.ts +142 -0
  476. package/src/schema/LiveStoreEvent/client.ts +236 -0
  477. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  478. package/src/schema/LiveStoreEvent/global.ts +45 -0
  479. package/src/schema/LiveStoreEvent/input.ts +63 -0
  480. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  481. package/src/schema/events.ts +1 -1
  482. package/src/schema/mod.ts +7 -4
  483. package/src/schema/schema.ts +48 -6
  484. package/src/schema/state/sqlite/client-document-def.test.ts +172 -14
  485. package/src/schema/state/sqlite/client-document-def.ts +126 -98
  486. package/src/schema/state/sqlite/column-annotations.test.ts +27 -45
  487. package/src/schema/state/sqlite/column-annotations.ts +27 -30
  488. package/src/schema/state/sqlite/column-def.test.ts +186 -77
  489. package/src/schema/state/sqlite/column-def.ts +169 -62
  490. package/src/schema/state/sqlite/column-spec.test.ts +34 -19
  491. package/src/schema/state/sqlite/column-spec.ts +38 -11
  492. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +17 -7
  493. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
  494. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +37 -17
  495. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +65 -45
  496. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +48 -40
  497. package/src/schema/state/sqlite/mod.ts +9 -12
  498. package/src/schema/state/sqlite/persistence.ts +11 -0
  499. package/src/schema/state/sqlite/query-builder/api.ts +61 -23
  500. package/src/schema/state/sqlite/query-builder/astToSql.ts +117 -23
  501. package/src/schema/state/sqlite/query-builder/impl.test.ts +489 -551
  502. package/src/schema/state/sqlite/query-builder/impl.ts +43 -26
  503. package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
  504. package/src/schema/state/sqlite/schema-helpers.ts +30 -22
  505. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
  506. package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
  507. package/src/schema/state/sqlite/system-tables/state-tables.ts +109 -0
  508. package/src/schema/state/sqlite/table-def.test.ts +295 -46
  509. package/src/schema/state/sqlite/table-def.ts +109 -64
  510. package/src/schema/unknown-events.ts +132 -0
  511. package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
  512. package/src/schema-management/common.ts +2 -2
  513. package/src/schema-management/migrations.ts +42 -9
  514. package/src/schema-management/validate-schema.ts +3 -3
  515. package/src/session-id-symbol.ts +59 -0
  516. package/src/sql-queries/sql-queries.ts +26 -18
  517. package/src/sql-queries/sql-query-builder.ts +1 -0
  518. package/src/sql-queries/types.ts +6 -7
  519. package/src/sqlite-db-helper.ts +67 -5
  520. package/src/sqlite-types.ts +9 -11
  521. package/src/sync/ClientSessionSyncProcessor.ts +388 -194
  522. package/src/sync/errors.ts +18 -28
  523. package/src/sync/index.ts +2 -0
  524. package/src/sync/mock-sync-backend.test.ts +78 -0
  525. package/src/sync/mock-sync-backend.ts +196 -108
  526. package/src/sync/next/compact-events.ts +10 -11
  527. package/src/sync/next/facts.ts +13 -14
  528. package/src/sync/next/history-dag-common.ts +306 -26
  529. package/src/sync/next/history-dag.ts +20 -13
  530. package/src/sync/next/rebase-events.ts +12 -12
  531. package/src/sync/next/test/compact-events.calculator.test.ts +5 -4
  532. package/src/sync/next/test/compact-events.test.ts +4 -3
  533. package/src/sync/next/test/event-fixtures.ts +14 -14
  534. package/src/sync/next/test/history-dag-common.test.ts +87 -0
  535. package/src/sync/sync-backend-kv.ts +7 -4
  536. package/src/sync/sync-backend.ts +75 -26
  537. package/src/sync/sync.ts +24 -2
  538. package/src/sync/syncstate.test.ts +657 -442
  539. package/src/sync/syncstate.ts +175 -160
  540. package/src/sync/transport-chunking.ts +85 -0
  541. package/src/sync/validate-push-payload.ts +6 -8
  542. package/src/testing/event-factory.ts +10 -12
  543. package/src/util.ts +20 -11
  544. package/src/version.ts +32 -8
  545. package/dist/schema/EventDef.d.ts +0 -126
  546. package/dist/schema/EventDef.d.ts.map +0 -1
  547. package/dist/schema/EventDef.js +0 -46
  548. package/dist/schema/EventDef.js.map +0 -1
  549. package/dist/schema/EventSequenceNumber.d.ts +0 -80
  550. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  551. package/dist/schema/EventSequenceNumber.js +0 -139
  552. package/dist/schema/EventSequenceNumber.js.map +0 -1
  553. package/dist/schema/LiveStoreEvent.d.ts +0 -306
  554. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  555. package/dist/schema/LiveStoreEvent.js +0 -147
  556. package/dist/schema/LiveStoreEvent.js.map +0 -1
  557. package/dist/schema/state/sqlite/system-tables.d.ts +0 -976
  558. package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
  559. package/dist/schema/state/sqlite/system-tables.js +0 -81
  560. package/dist/schema/state/sqlite/system-tables.js.map +0 -1
  561. package/dist/sql-queries/misc.d.ts +0 -2
  562. package/dist/sql-queries/misc.d.ts.map +0 -1
  563. package/dist/sql-queries/misc.js +0 -2
  564. package/dist/sql-queries/misc.js.map +0 -1
  565. package/dist/sync/next/graphology.d.ts +0 -8
  566. package/dist/sync/next/graphology.d.ts.map +0 -1
  567. package/dist/sync/next/graphology.js +0 -30
  568. package/dist/sync/next/graphology.js.map +0 -1
  569. package/dist/sync/next/graphology_.d.ts +0 -3
  570. package/dist/sync/next/graphology_.d.ts.map +0 -1
  571. package/dist/sync/next/graphology_.js +0 -3
  572. package/dist/sync/next/graphology_.js.map +0 -1
  573. package/src/schema/EventDef.ts +0 -222
  574. package/src/schema/EventSequenceNumber.ts +0 -199
  575. package/src/schema/LiveStoreEvent.ts +0 -286
  576. package/src/schema/state/sqlite/system-tables.ts +0 -106
  577. package/src/sql-queries/misc.ts +0 -2
  578. package/src/sync/next/ambient.d.ts +0 -3
  579. package/src/sync/next/graphology.ts +0 -41
  580. package/src/sync/next/graphology_.ts +0 -2
@@ -3,77 +3,77 @@
3
3
  exports[`FieldDefs > boolean 1`] = `
4
4
  {
5
5
  "autoIncrement": false,
6
- "columnType": "text",
6
+ "columnType": "integer",
7
7
  "default": {
8
8
  "_id": "Option",
9
9
  "_tag": "None",
10
10
  },
11
11
  "nullable": false,
12
12
  "primaryKey": false,
13
- "schema": [Function],
13
+ "schema": {
14
+ "ast": "Boolean",
15
+ "decodedAst": "Boolean",
16
+ "encodedAst": "Union",
17
+ },
14
18
  }
15
19
  `;
16
20
 
17
21
  exports[`FieldDefs > boolean 2`] = `
18
22
  {
19
23
  "autoIncrement": false,
20
- "columnType": "text",
24
+ "columnType": "integer",
21
25
  "default": {
22
26
  "_id": "Option",
23
27
  "_tag": "None",
24
28
  },
25
29
  "nullable": false,
26
30
  "primaryKey": false,
27
- "schema": [Function],
31
+ "schema": {
32
+ "ast": "Boolean",
33
+ "decodedAst": "Boolean",
34
+ "encodedAst": "Union",
35
+ },
28
36
  }
29
37
  `;
30
38
 
31
39
  exports[`FieldDefs > boolean 3`] = `
32
40
  {
33
41
  "autoIncrement": false,
34
- "columnType": "text",
42
+ "columnType": "integer",
35
43
  "default": {
36
44
  "_id": "Option",
37
45
  "_tag": "Some",
38
- "value": null,
46
+ "value": false,
39
47
  },
40
- "nullable": true,
48
+ "nullable": false,
41
49
  "primaryKey": false,
42
- "schema": [Function],
43
- }
44
- `;
45
-
46
- exports[`FieldDefs > boolean 4`] = `
47
- {
48
- "autoIncrement": false,
49
- "columnType": "text",
50
- "default": {
51
- "_id": "Option",
52
- "_tag": "Some",
53
- "value": "foo",
50
+ "schema": {
51
+ "ast": "Boolean",
52
+ "decodedAst": "Boolean",
53
+ "encodedAst": "Union",
54
54
  },
55
- "nullable": true,
56
- "primaryKey": false,
57
- "schema": [Function],
58
55
  }
59
56
  `;
60
57
 
61
- exports[`FieldDefs > boolean 5`] = `
58
+ exports[`FieldDefs > datetime 1`] = `
62
59
  {
63
60
  "autoIncrement": false,
64
61
  "columnType": "text",
65
62
  "default": {
66
63
  "_id": "Option",
67
- "_tag": "Some",
68
- "value": "foo",
64
+ "_tag": "None",
69
65
  },
70
- "nullable": true,
66
+ "nullable": false,
71
67
  "primaryKey": false,
72
- "schema": [Function],
68
+ "schema": {
69
+ "ast": "Declaration",
70
+ "decodedAst": "Declaration",
71
+ "encodedAst": "String",
72
+ },
73
73
  }
74
74
  `;
75
75
 
76
- exports[`FieldDefs > boolean 6`] = `
76
+ exports[`FieldDefs > datetime 2`] = `
77
77
  {
78
78
  "autoIncrement": false,
79
79
  "columnType": "text",
@@ -83,11 +83,15 @@ exports[`FieldDefs > boolean 6`] = `
83
83
  },
84
84
  "nullable": false,
85
85
  "primaryKey": false,
86
- "schema": [Function],
86
+ "schema": {
87
+ "ast": "Declaration",
88
+ "decodedAst": "Declaration",
89
+ "encodedAst": "String",
90
+ },
87
91
  }
88
92
  `;
89
93
 
90
- exports[`FieldDefs > boolean 7`] = `
94
+ exports[`FieldDefs > datetime 3`] = `
91
95
  {
92
96
  "autoIncrement": false,
93
97
  "columnType": "text",
@@ -98,28 +102,34 @@ exports[`FieldDefs > boolean 7`] = `
98
102
  },
99
103
  "nullable": true,
100
104
  "primaryKey": false,
101
- "schema": [Function],
105
+ "schema": {
106
+ "ast": "Union",
107
+ "decodedAst": "Union",
108
+ "encodedAst": "Union",
109
+ },
102
110
  }
103
111
  `;
104
112
 
105
- exports[`FieldDefs > boolean 8`] = `
113
+ exports[`FieldDefs > datetime 4`] = `
106
114
  {
107
115
  "autoIncrement": false,
108
116
  "columnType": "text",
109
117
  "default": {
110
118
  "_id": "Option",
111
119
  "_tag": "Some",
112
- "value": {
113
- "name": "Bob",
114
- },
120
+ "value": 2022-02-02T00:00:00.000Z,
115
121
  },
116
- "nullable": true,
122
+ "nullable": false,
117
123
  "primaryKey": false,
118
- "schema": [Function],
124
+ "schema": {
125
+ "ast": "Declaration",
126
+ "decodedAst": "Declaration",
127
+ "encodedAst": "String",
128
+ },
119
129
  }
120
130
  `;
121
131
 
122
- exports[`FieldDefs > boolean 9`] = `
132
+ exports[`FieldDefs > json 1`] = `
123
133
  {
124
134
  "autoIncrement": false,
125
135
  "columnType": "text",
@@ -129,93 +139,143 @@ exports[`FieldDefs > boolean 9`] = `
129
139
  },
130
140
  "nullable": false,
131
141
  "primaryKey": false,
132
- "schema": [Function],
142
+ "schema": {
143
+ "ast": "Any",
144
+ "decodedAst": "Any",
145
+ "encodedAst": "String",
146
+ },
133
147
  }
134
148
  `;
135
149
 
136
- exports[`FieldDefs > boolean 10`] = `
150
+ exports[`FieldDefs > json 2`] = `
137
151
  {
138
152
  "autoIncrement": false,
139
153
  "columnType": "text",
140
154
  "default": {
141
155
  "_id": "Option",
142
- "_tag": "None",
156
+ "_tag": "Some",
157
+ "value": null,
143
158
  },
144
- "nullable": false,
159
+ "nullable": true,
145
160
  "primaryKey": false,
146
- "schema": [Function],
161
+ "schema": {
162
+ "ast": "Union",
163
+ "decodedAst": "Union",
164
+ "encodedAst": "Union",
165
+ },
147
166
  }
148
167
  `;
149
168
 
150
- exports[`FieldDefs > boolean 11`] = `
169
+ exports[`FieldDefs > json 3`] = `
151
170
  {
152
171
  "autoIncrement": false,
153
172
  "columnType": "text",
154
173
  "default": {
155
174
  "_id": "Option",
156
175
  "_tag": "Some",
157
- "value": null,
176
+ "value": {
177
+ "name": "Bob",
178
+ },
158
179
  },
159
180
  "nullable": true,
160
181
  "primaryKey": false,
161
- "schema": [Function],
182
+ "schema": {
183
+ "ast": "Union",
184
+ "decodedAst": "Union",
185
+ "encodedAst": "Union",
186
+ },
162
187
  }
163
188
  `;
164
189
 
165
- exports[`FieldDefs > boolean 12`] = `
190
+ exports[`FieldDefs > text 1`] = `
166
191
  {
167
192
  "autoIncrement": false,
168
193
  "columnType": "text",
169
194
  "default": {
170
195
  "_id": "Option",
171
- "_tag": "Some",
172
- "value": 2022-02-02T00:00:00.000Z,
196
+ "_tag": "None",
173
197
  },
174
198
  "nullable": false,
175
199
  "primaryKey": false,
176
- "schema": [Function],
200
+ "schema": {
201
+ "ast": "String",
202
+ "decodedAst": "String",
203
+ "encodedAst": "String",
204
+ },
177
205
  }
178
206
  `;
179
207
 
180
- exports[`FieldDefs > boolean 13`] = `
208
+ exports[`FieldDefs > text 2`] = `
181
209
  {
182
210
  "autoIncrement": false,
183
- "columnType": "integer",
211
+ "columnType": "text",
184
212
  "default": {
185
213
  "_id": "Option",
186
214
  "_tag": "None",
187
215
  },
188
216
  "nullable": false,
189
217
  "primaryKey": false,
190
- "schema": [Function],
218
+ "schema": {
219
+ "ast": "String",
220
+ "decodedAst": "String",
221
+ "encodedAst": "String",
222
+ },
191
223
  }
192
224
  `;
193
225
 
194
- exports[`FieldDefs > boolean 14`] = `
226
+ exports[`FieldDefs > text 3`] = `
195
227
  {
196
228
  "autoIncrement": false,
197
- "columnType": "integer",
229
+ "columnType": "text",
198
230
  "default": {
199
231
  "_id": "Option",
200
- "_tag": "None",
232
+ "_tag": "Some",
233
+ "value": null,
201
234
  },
202
- "nullable": false,
235
+ "nullable": true,
203
236
  "primaryKey": false,
204
- "schema": [Function],
237
+ "schema": {
238
+ "ast": "Union",
239
+ "decodedAst": "Union",
240
+ "encodedAst": "Union",
241
+ },
205
242
  }
206
243
  `;
207
244
 
208
- exports[`FieldDefs > boolean 15`] = `
245
+ exports[`FieldDefs > text 4`] = `
209
246
  {
210
247
  "autoIncrement": false,
211
- "columnType": "integer",
248
+ "columnType": "text",
212
249
  "default": {
213
250
  "_id": "Option",
214
251
  "_tag": "Some",
215
- "value": false,
252
+ "value": "foo",
216
253
  },
217
- "nullable": false,
254
+ "nullable": true,
218
255
  "primaryKey": false,
219
- "schema": [Function],
256
+ "schema": {
257
+ "ast": "Union",
258
+ "decodedAst": "Union",
259
+ "encodedAst": "Union",
260
+ },
261
+ }
262
+ `;
263
+
264
+ exports[`FieldDefs > text 5`] = `
265
+ {
266
+ "autoIncrement": false,
267
+ "columnType": "text",
268
+ "default": {
269
+ "_id": "Option",
270
+ "_tag": "Some",
271
+ "value": "foo",
272
+ },
273
+ "nullable": true,
274
+ "primaryKey": false,
275
+ "schema": {
276
+ "ast": "Union",
277
+ "decodedAst": "Union",
278
+ "encodedAst": "Union",
279
+ },
220
280
  }
221
281
  `;
@@ -1,35 +1,55 @@
1
- import { Schema } from '@livestore/utils/effect'
2
1
  import { describe, expect, test } from 'vitest'
3
2
 
3
+ import { Schema } from '@livestore/utils/effect'
4
+
4
5
  import * as F from './field-defs.ts'
5
6
 
6
- describe.concurrent('FieldDefs', () => {
7
+ describe('FieldDefs', () => {
7
8
  test('text', () => {
8
- expect(F.text()).toMatchSnapshot()
9
- expect(F.text({})).toMatchSnapshot()
10
- expect(F.text({ default: null, nullable: true })).toMatchSnapshot()
11
- expect(F.text({ schema: Schema.Literal('foo'), nullable: true, default: 'foo' })).toMatchSnapshot()
12
- expect(F.text({ schema: Schema.Union(Schema.Literal('foo')), nullable: true, default: 'foo' })).toMatchSnapshot()
9
+ expect(columnDefSnapshot(F.text())).toMatchSnapshot()
10
+ expect(columnDefSnapshot(F.text({}))).toMatchSnapshot()
11
+ expect(columnDefSnapshot(F.text({ default: null, nullable: true }))).toMatchSnapshot()
12
+ expect(
13
+ columnDefSnapshot(F.text({ schema: Schema.Literal('foo'), nullable: true, default: 'foo' })),
14
+ ).toMatchSnapshot()
15
+ expect(
16
+ columnDefSnapshot(F.text({ schema: Schema.Union([Schema.Literal('foo')]), nullable: true, default: 'foo' })),
17
+ ).toMatchSnapshot()
13
18
  })
14
19
 
15
20
  test('json', () => {
16
- expect(F.json()).toMatchSnapshot()
17
- expect(F.json({ default: null, nullable: true })).toMatchSnapshot()
21
+ expect(columnDefSnapshot(F.json())).toMatchSnapshot()
22
+ expect(columnDefSnapshot(F.json({ default: null, nullable: true }))).toMatchSnapshot()
18
23
  expect(
19
- F.json({ schema: Schema.Struct({ name: Schema.String }), default: { name: 'Bob' }, nullable: true }),
24
+ columnDefSnapshot(
25
+ F.json({ schema: Schema.Struct({ name: Schema.String }), default: { name: 'Bob' }, nullable: true }),
26
+ ),
20
27
  ).toMatchSnapshot()
21
28
  })
22
29
 
23
30
  test('datetime', () => {
24
- expect(F.datetime()).toMatchSnapshot()
25
- expect(F.datetime({})).toMatchSnapshot()
26
- expect(F.datetime({ default: null, nullable: true })).toMatchSnapshot()
27
- expect(F.datetime({ default: new Date('2022-02-02') })).toMatchSnapshot()
31
+ expect(columnDefSnapshot(F.datetime())).toMatchSnapshot()
32
+ expect(columnDefSnapshot(F.datetime({}))).toMatchSnapshot()
33
+ expect(columnDefSnapshot(F.datetime({ default: null, nullable: true }))).toMatchSnapshot()
34
+ expect(columnDefSnapshot(F.datetime({ default: new Date('2022-02-02') }))).toMatchSnapshot()
28
35
  })
29
36
 
30
37
  test('boolean', () => {
31
- expect(F.boolean()).toMatchSnapshot()
32
- expect(F.boolean({})).toMatchSnapshot()
33
- expect(F.boolean({ default: false })).toMatchSnapshot()
38
+ expect(columnDefSnapshot(F.boolean())).toMatchSnapshot()
39
+ expect(columnDefSnapshot(F.boolean({}))).toMatchSnapshot()
40
+ expect(columnDefSnapshot(F.boolean({ default: false }))).toMatchSnapshot()
34
41
  })
35
42
  })
43
+
44
+ const columnDefSnapshot = (columnDef: F.ColumnDefinition.Any) => ({
45
+ ...columnDef,
46
+ schema: schemaSnapshot(columnDef.schema),
47
+ })
48
+
49
+ // Effect schemas expose a large inspectable object graph. Snapshot only the
50
+ // schema shape this DSL cares about.
51
+ const schemaSnapshot = (schema: Schema.Codec<unknown, unknown>) => ({
52
+ ast: schema.ast._tag,
53
+ encodedAst: Schema.toEncoded(schema).ast._tag,
54
+ decodedAst: Schema.toType(schema).ast._tag,
55
+ })
@@ -1,12 +1,32 @@
1
1
  import { casesHandled } from '@livestore/utils'
2
2
  import { Option, Schema } from '@livestore/utils/effect'
3
3
 
4
- export type ColumnDefinition<TEncoded, TDecoded> = {
4
+ import { SqliteReal } from '../../../../../util.ts'
5
+
6
+ export type SqlDefaultValue = {
7
+ readonly sql: string
8
+ }
9
+
10
+ export const isSqlDefaultValue = (value: unknown): value is SqlDefaultValue => {
11
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- type guard property access after structural check
12
+ return typeof value === 'object' && value !== null && 'sql' in value && typeof (value as any).sql === 'string'
13
+ }
14
+
15
+ export type ColumnDefaultThunk<T> = () => T
16
+
17
+ export const isDefaultThunk = (value: unknown): value is ColumnDefaultThunk<unknown> => typeof value === 'function'
18
+
19
+ export type ColumnDefaultValue<T> = T | null | ColumnDefaultThunk<T | null> | SqlDefaultValue
20
+
21
+ export const resolveColumnDefault = <T>(value: ColumnDefaultValue<T>): T | null | SqlDefaultValue =>
22
+ isDefaultThunk(value) === true ? value() : value
23
+
24
+ export type ColumnDefinition<TEncoded, TDecoded, TNullable extends boolean = boolean> = {
5
25
  readonly columnType: FieldColumnType
6
- readonly schema: Schema.Schema<TDecoded, TEncoded>
7
- readonly default: Option.Option<TEncoded>
26
+ readonly schema: Schema.Codec<TDecoded, TEncoded>
27
+ readonly default: Option.Option<ColumnDefaultValue<TDecoded>>
8
28
  /** @default false */
9
- readonly nullable: boolean
29
+ readonly nullable: TNullable
10
30
  /** @default false */
11
31
  readonly primaryKey: boolean
12
32
  /** @default false */
@@ -23,13 +43,22 @@ export const isColumnDefinition = (value: unknown): value is ColumnDefinition.An
23
43
  typeof value === 'object' &&
24
44
  value !== null &&
25
45
  'columnType' in value &&
46
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- type guard narrowing; columnType checked to be in valid set
26
47
  validColumnTypes.includes(value.columnType as any)
27
48
  )
28
49
  }
29
50
 
51
+ type MaybeNull<T, TNullable extends boolean> = T | (TNullable extends true ? null : never)
52
+
53
+ type ColumnDefaultArg<T, TNullable extends boolean> =
54
+ | MaybeNull<T, TNullable>
55
+ | ColumnDefaultThunk<MaybeNull<T, TNullable>>
56
+ | SqlDefaultValue
57
+ | NoDefault
58
+
30
59
  export type ColumnDefinitionInput = {
31
- readonly schema?: Schema.Schema<unknown>
32
- readonly default?: unknown | NoDefault
60
+ readonly schema?: Schema.Codec<unknown, unknown>
61
+ readonly default?: ColumnDefaultArg<unknown, boolean>
33
62
  readonly nullable?: boolean
34
63
  readonly primaryKey?: boolean
35
64
  readonly autoIncrement?: boolean
@@ -38,18 +67,10 @@ export type ColumnDefinitionInput = {
38
67
  export const NoDefault = Symbol.for('NoDefault')
39
68
  export type NoDefault = typeof NoDefault
40
69
 
41
- export type SqlDefaultValue = {
42
- readonly sql: string
43
- }
44
-
45
- export const isSqlDefaultValue = (value: unknown): value is SqlDefaultValue => {
46
- return typeof value === 'object' && value !== null && 'sql' in value && typeof value.sql === 'string'
47
- }
48
-
49
70
  export type ColDefFn<TColumnType extends FieldColumnType> = {
50
71
  (): {
51
72
  columnType: TColumnType
52
- schema: Schema.Schema<DefaultEncodedForColumnType<TColumnType>>
73
+ schema: Schema.Codec<DefaultEncodedForColumnType<TColumnType>>
53
74
  default: Option.None<never>
54
75
  nullable: false
55
76
  primaryKey: false
@@ -59,11 +80,11 @@ export type ColDefFn<TColumnType extends FieldColumnType> = {
59
80
  TEncoded extends DefaultEncodedForColumnType<TColumnType>,
60
81
  TDecoded = DefaultEncodedForColumnType<TColumnType>,
61
82
  const TNullable extends boolean = false,
62
- const TDefault extends TDecoded | SqlDefaultValue | NoDefault | (TNullable extends true ? null : never) = NoDefault,
83
+ const TDefault extends ColumnDefaultArg<NoInfer<TDecoded>, TNullable> = NoDefault,
63
84
  const TPrimaryKey extends boolean = false,
64
85
  const TAutoIncrement extends boolean = false,
65
86
  >(args: {
66
- schema?: Schema.Schema<TDecoded, TEncoded>
87
+ schema?: Schema.Codec<TDecoded, TEncoded>
67
88
  default?: TDefault
68
89
  nullable?: TNullable
69
90
  primaryKey?: TPrimaryKey
@@ -71,8 +92,8 @@ export type ColDefFn<TColumnType extends FieldColumnType> = {
71
92
  }): {
72
93
  columnType: TColumnType
73
94
  schema: TNullable extends true
74
- ? Schema.Schema<NoInfer<TDecoded> | null, NoInfer<TEncoded> | null>
75
- : Schema.Schema<NoInfer<TDecoded>, NoInfer<TEncoded>>
95
+ ? Schema.Codec<NoInfer<TDecoded> | null, NoInfer<TEncoded> | null>
96
+ : Schema.Codec<NoInfer<TDecoded>, NoInfer<TEncoded>>
76
97
  default: TDefault extends NoDefault ? Option.None<never> : Option.Some<NoInfer<TDefault>>
77
98
  nullable: NoInfer<TNullable>
78
99
  primaryKey: NoInfer<TPrimaryKey>
@@ -84,10 +105,11 @@ const makeColDef =
84
105
  <TColumnType extends FieldColumnType>(columnType: TColumnType): ColDefFn<TColumnType> =>
85
106
  (def?: ColumnDefinitionInput) => {
86
107
  const nullable = def?.nullable ?? false
87
- const schemaWithoutNull: Schema.Schema<any> = def?.schema ?? defaultSchemaForColumnType(columnType)
108
+ const schemaWithoutNull = def?.schema ?? defaultSchemaForColumnType(columnType)
88
109
  const schema = nullable === true ? Schema.NullOr(schemaWithoutNull) : schemaWithoutNull
89
110
  const default_ = def?.default === undefined || def.default === NoDefault ? Option.none() : Option.some(def.default)
90
111
 
112
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- column factory return type uses complex conditional generics; consumer type safety enforced by ColDefFn signature
91
113
  return {
92
114
  columnType,
93
115
  schema,
@@ -123,7 +145,7 @@ export type SpecializedColDefFn<
123
145
  > = {
124
146
  (): {
125
147
  columnType: TColumnType
126
- schema: Schema.Schema<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
148
+ schema: Schema.Codec<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
127
149
  default: Option.None<never>
128
150
  nullable: false
129
151
  primaryKey: false
@@ -132,13 +154,13 @@ export type SpecializedColDefFn<
132
154
  <
133
155
  TDecoded = TBaseDecoded,
134
156
  const TNullable extends boolean = false,
135
- const TDefault extends TDecoded | NoDefault | (TNullable extends true ? null : never) = NoDefault,
157
+ const TDefault extends ColumnDefaultArg<NoInfer<TDecoded>, TNullable> = NoDefault,
136
158
  const TPrimaryKey extends boolean = false,
137
159
  const TAutoIncrement extends boolean = false,
138
160
  >(
139
161
  args: TAllowsCustomSchema extends true
140
162
  ? {
141
- schema?: Schema.Schema<TDecoded, any>
163
+ schema?: Schema.Codec<TDecoded, any>
142
164
  default?: TDefault
143
165
  nullable?: TNullable
144
166
  primaryKey?: TPrimaryKey
@@ -153,8 +175,8 @@ export type SpecializedColDefFn<
153
175
  ): {
154
176
  columnType: TColumnType
155
177
  schema: TNullable extends true
156
- ? Schema.Schema<NoInfer<TDecoded> | null, DefaultEncodedForColumnType<TColumnType> | null>
157
- : Schema.Schema<NoInfer<TDecoded>, DefaultEncodedForColumnType<TColumnType>>
178
+ ? Schema.Codec<NoInfer<TDecoded> | null, DefaultEncodedForColumnType<TColumnType> | null>
179
+ : Schema.Codec<NoInfer<TDecoded>, DefaultEncodedForColumnType<TColumnType>>
158
180
  default: TDefault extends NoDefault ? Option.None<never> : Option.Some<TDefault>
159
181
  nullable: NoInfer<TNullable>
160
182
  primaryKey: NoInfer<TPrimaryKey>
@@ -167,7 +189,7 @@ type MakeSpecializedColDefFn = {
167
189
  columnType: TColumnType,
168
190
  opts: {
169
191
  _tag: 'baseSchema'
170
- baseSchema: Schema.Schema<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
192
+ baseSchema: Schema.Codec<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
171
193
  },
172
194
  ): SpecializedColDefFn<TColumnType, false, TBaseDecoded>
173
195
  <TColumnType extends FieldColumnType, TBaseDecoded>(
@@ -175,18 +197,20 @@ type MakeSpecializedColDefFn = {
175
197
  opts: {
176
198
  _tag: 'baseSchemaFn'
177
199
  baseSchemaFn: <TDecoded>(
178
- customSchema: Schema.Schema<TDecoded, TBaseDecoded> | undefined,
179
- ) => Schema.Schema<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
200
+ customSchema: Schema.Codec<TDecoded, TBaseDecoded> | undefined,
201
+ ) => Schema.Codec<TBaseDecoded, DefaultEncodedForColumnType<TColumnType>>
180
202
  },
181
203
  ): SpecializedColDefFn<TColumnType, true, TBaseDecoded>
182
204
  }
183
205
 
184
206
  const makeSpecializedColDef: MakeSpecializedColDefFn = (columnType, opts) => (def?: ColumnDefinitionInput) => {
185
207
  const nullable = def?.nullable ?? false
208
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- schema type variance; custom schema compatibility checked at call site
186
209
  const schemaWithoutNull = opts._tag === 'baseSchemaFn' ? opts.baseSchemaFn(def?.schema as any) : opts.baseSchema
187
210
  const schema = nullable === true ? Schema.NullOr(schemaWithoutNull) : schemaWithoutNull
188
211
  const default_ = def?.default === undefined || def.default === NoDefault ? Option.none() : Option.some(def.default)
189
212
 
213
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- specialized column factory return type uses complex conditional generics; consumer type safety enforced by SpecializedColDefFn signature
190
214
  return {
191
215
  columnType,
192
216
  schema,
@@ -199,28 +223,22 @@ const makeSpecializedColDef: MakeSpecializedColDefFn = (columnType, opts) => (de
199
223
 
200
224
  export const json: SpecializedColDefFn<'text', true, unknown> = makeSpecializedColDef('text', {
201
225
  _tag: 'baseSchemaFn',
202
- baseSchemaFn: (customSchema) => Schema.parseJson(customSchema ?? Schema.Any),
226
+ baseSchemaFn: (customSchema) => Schema.fromJsonString(customSchema ?? Schema.Any),
203
227
  })
204
228
 
205
229
  export const datetime: SpecializedColDefFn<'text', false, Date> = makeSpecializedColDef('text', {
206
230
  _tag: 'baseSchema',
207
- baseSchema: Schema.Date,
231
+ baseSchema: Schema.DateFromString,
208
232
  })
209
233
 
210
234
  export const datetimeInteger: SpecializedColDefFn<'integer', false, Date> = makeSpecializedColDef('integer', {
211
235
  _tag: 'baseSchema',
212
- baseSchema: Schema.transform(Schema.Number, Schema.DateFromSelf, {
213
- decode: (ms) => new Date(ms),
214
- encode: (date) => date.getTime(),
215
- }),
236
+ baseSchema: Schema.DateFromMillis,
216
237
  })
217
238
 
218
239
  export const boolean: SpecializedColDefFn<'integer', false, boolean> = makeSpecializedColDef('integer', {
219
240
  _tag: 'baseSchema',
220
- baseSchema: Schema.transform(Schema.Number, Schema.Boolean, {
221
- decode: (_) => _ === 1,
222
- encode: (_) => (_ ? 1 : 0),
223
- }),
241
+ baseSchema: Schema.BooleanFromBit,
224
242
  })
225
243
 
226
244
  export type FieldColumnType = 'text' | 'integer' | 'real' | 'blob'
@@ -235,23 +253,25 @@ export type DefaultEncodedForColumnType<TColumnType extends FieldColumnType> = T
235
253
  ? Uint8Array<ArrayBuffer>
236
254
  : never
237
255
 
238
- export const defaultSchemaForColumnType = <TColumnType extends FieldColumnType>(
239
- columnType: TColumnType,
240
- ): Schema.Schema<DefaultEncodedForColumnType<TColumnType>> => {
256
+ export const defaultSchemaForColumnType = <TColumnType extends FieldColumnType>(columnType: TColumnType) => {
241
257
  type T = DefaultEncodedForColumnType<TColumnType>
242
258
 
243
259
  switch (columnType) {
244
260
  case 'text': {
245
- return Schema.String as any as Schema.Schema<T>
261
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- switch-based type narrowing for column type to schema mapping; each case is correct for its branch
262
+ return Schema.String as Schema.Codec<T>
246
263
  }
247
264
  case 'integer': {
248
- return Schema.Number as any as Schema.Schema<T>
265
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- switch-based type narrowing for column type to schema mapping; each case is correct for its branch
266
+ return Schema.Finite as Schema.Codec<T>
249
267
  }
250
268
  case 'real': {
251
- return Schema.Number as any as Schema.Schema<T>
269
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- switch-based type narrowing for column type to schema mapping; each case is correct for its branch
270
+ return SqliteReal as Schema.Codec<T>
252
271
  }
253
272
  case 'blob': {
254
- return Schema.Uint8ArrayFromSelf as any as Schema.Schema<T>
273
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- switch-based type narrowing for column type to schema mapping; each case is correct for its branch
274
+ return Schema.Uint8Array as Schema.Codec<T>
255
275
  }
256
276
  default: {
257
277
  return casesHandled(columnType)