@livestore/common 0.3.0-dev.9 → 0.3.1-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 (479) hide show
  1. package/LICENSE +201 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/fixture.d.ts +83 -221
  4. package/dist/__tests__/fixture.d.ts.map +1 -1
  5. package/dist/__tests__/fixture.js +33 -11
  6. package/dist/__tests__/fixture.js.map +1 -1
  7. package/dist/adapter-types.d.ts +120 -64
  8. package/dist/adapter-types.d.ts.map +1 -1
  9. package/dist/adapter-types.js +39 -8
  10. package/dist/adapter-types.js.map +1 -1
  11. package/dist/bounded-collections.d.ts.map +1 -1
  12. package/dist/debug-info.d.ts +1 -1
  13. package/dist/debug-info.d.ts.map +1 -1
  14. package/dist/debug-info.js +1 -0
  15. package/dist/debug-info.js.map +1 -1
  16. package/dist/devtools/devtools-messages-client-session.d.ts +390 -0
  17. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
  18. package/dist/devtools/devtools-messages-client-session.js +97 -0
  19. package/dist/devtools/devtools-messages-client-session.js.map +1 -0
  20. package/dist/devtools/devtools-messages-common.d.ts +68 -0
  21. package/dist/devtools/devtools-messages-common.d.ts.map +1 -0
  22. package/dist/devtools/devtools-messages-common.js +60 -0
  23. package/dist/devtools/devtools-messages-common.js.map +1 -0
  24. package/dist/devtools/devtools-messages-leader.d.ts +394 -0
  25. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -0
  26. package/dist/devtools/devtools-messages-leader.js +147 -0
  27. package/dist/devtools/devtools-messages-leader.js.map +1 -0
  28. package/dist/devtools/devtools-messages.d.ts +3 -580
  29. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  30. package/dist/devtools/devtools-messages.js +3 -174
  31. package/dist/devtools/devtools-messages.js.map +1 -1
  32. package/dist/devtools/devtools-sessioninfo.d.ts +32 -0
  33. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
  34. package/dist/devtools/devtools-sessioninfo.js +36 -0
  35. package/dist/devtools/devtools-sessioninfo.js.map +1 -0
  36. package/dist/devtools/mod.d.ts +55 -0
  37. package/dist/devtools/mod.d.ts.map +1 -0
  38. package/dist/devtools/mod.js +33 -0
  39. package/dist/devtools/mod.js.map +1 -0
  40. package/dist/index.d.ts +7 -9
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +7 -9
  43. package/dist/index.js.map +1 -1
  44. package/dist/leader-thread/LeaderSyncProcessor.d.ts +36 -11
  45. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  46. package/dist/leader-thread/LeaderSyncProcessor.js +426 -252
  47. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  48. package/dist/leader-thread/connection.d.ts +34 -6
  49. package/dist/leader-thread/connection.d.ts.map +1 -1
  50. package/dist/leader-thread/connection.js +22 -7
  51. package/dist/leader-thread/connection.js.map +1 -1
  52. package/dist/leader-thread/eventlog.d.ts +27 -0
  53. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  54. package/dist/leader-thread/eventlog.js +119 -0
  55. package/dist/leader-thread/eventlog.js.map +1 -0
  56. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  57. package/dist/leader-thread/leader-worker-devtools.js +155 -80
  58. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  59. package/dist/leader-thread/make-leader-thread-layer.d.ts +22 -9
  60. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  61. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  62. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  63. package/dist/leader-thread/materialize-event.d.ts +16 -0
  64. package/dist/leader-thread/materialize-event.d.ts.map +1 -0
  65. package/dist/leader-thread/materialize-event.js +109 -0
  66. package/dist/leader-thread/materialize-event.js.map +1 -0
  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 +28 -32
  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 +79 -38
  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/make-client-session.d.ts +23 -0
  84. package/dist/make-client-session.d.ts.map +1 -0
  85. package/dist/make-client-session.js +57 -0
  86. package/dist/make-client-session.js.map +1 -0
  87. package/dist/materializer-helper.d.ts +23 -0
  88. package/dist/materializer-helper.d.ts.map +1 -0
  89. package/dist/materializer-helper.js +86 -0
  90. package/dist/materializer-helper.js.map +1 -0
  91. package/dist/otel.d.ts +2 -0
  92. package/dist/otel.d.ts.map +1 -1
  93. package/dist/otel.js +5 -0
  94. package/dist/otel.js.map +1 -1
  95. package/dist/rematerialize-from-eventlog.d.ts +14 -0
  96. package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
  97. package/dist/rematerialize-from-eventlog.js +64 -0
  98. package/dist/rematerialize-from-eventlog.js.map +1 -0
  99. package/dist/schema/EventDef.d.ts +146 -0
  100. package/dist/schema/EventDef.d.ts.map +1 -0
  101. package/dist/schema/EventDef.js +58 -0
  102. package/dist/schema/EventDef.js.map +1 -0
  103. package/dist/schema/EventSequenceNumber.d.ts +57 -0
  104. package/dist/schema/EventSequenceNumber.d.ts.map +1 -0
  105. package/dist/schema/EventSequenceNumber.js +82 -0
  106. package/dist/schema/EventSequenceNumber.js.map +1 -0
  107. package/dist/schema/EventSequenceNumber.test.d.ts +2 -0
  108. package/dist/schema/EventSequenceNumber.test.d.ts.map +1 -0
  109. package/dist/schema/EventSequenceNumber.test.js +11 -0
  110. package/dist/schema/EventSequenceNumber.test.js.map +1 -0
  111. package/dist/schema/LiveStoreEvent.d.ts +257 -0
  112. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  113. package/dist/schema/LiveStoreEvent.js +117 -0
  114. package/dist/schema/LiveStoreEvent.js.map +1 -0
  115. package/dist/schema/events.d.ts +2 -0
  116. package/dist/schema/events.d.ts.map +1 -0
  117. package/dist/schema/events.js +2 -0
  118. package/dist/schema/events.js.map +1 -0
  119. package/dist/schema/mod.d.ts +8 -6
  120. package/dist/schema/mod.d.ts.map +1 -1
  121. package/dist/schema/mod.js +8 -6
  122. package/dist/schema/mod.js.map +1 -1
  123. package/dist/schema/schema.d.ts +50 -32
  124. package/dist/schema/schema.d.ts.map +1 -1
  125. package/dist/schema/schema.js +36 -43
  126. package/dist/schema/schema.js.map +1 -1
  127. package/dist/schema/state/mod.d.ts +3 -0
  128. package/dist/schema/state/mod.d.ts.map +1 -0
  129. package/dist/schema/state/mod.js +3 -0
  130. package/dist/schema/state/mod.js.map +1 -0
  131. package/dist/schema/state/sqlite/client-document-def.d.ts +223 -0
  132. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -0
  133. package/dist/schema/state/sqlite/client-document-def.js +170 -0
  134. package/dist/schema/state/sqlite/client-document-def.js.map +1 -0
  135. package/dist/schema/state/sqlite/client-document-def.test.d.ts +2 -0
  136. package/dist/schema/state/sqlite/client-document-def.test.d.ts.map +1 -0
  137. package/dist/schema/state/sqlite/client-document-def.test.js +201 -0
  138. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -0
  139. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +69 -0
  140. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -0
  141. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +71 -0
  142. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -0
  143. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +3 -0
  144. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -0
  145. package/dist/schema/state/sqlite/db-schema/ast/validate.js +12 -0
  146. package/dist/schema/state/sqlite/db-schema/ast/validate.js.map +1 -0
  147. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +90 -0
  148. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -0
  149. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +87 -0
  150. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -0
  151. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts +2 -0
  152. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  153. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +29 -0
  154. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -0
  155. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +90 -0
  156. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -0
  157. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +41 -0
  158. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -0
  159. package/dist/schema/state/sqlite/db-schema/hash.d.ts +2 -0
  160. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -0
  161. package/dist/schema/state/sqlite/db-schema/hash.js +14 -0
  162. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -0
  163. package/dist/schema/state/sqlite/db-schema/mod.d.ts +3 -0
  164. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -0
  165. package/dist/schema/state/sqlite/db-schema/mod.js +3 -0
  166. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -0
  167. package/dist/schema/state/sqlite/mod.d.ts +17 -0
  168. package/dist/schema/state/sqlite/mod.d.ts.map +1 -0
  169. package/dist/schema/state/sqlite/mod.js +41 -0
  170. package/dist/schema/state/sqlite/mod.js.map +1 -0
  171. package/dist/schema/state/sqlite/query-builder/api.d.ts +294 -0
  172. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -0
  173. package/dist/schema/state/sqlite/query-builder/api.js +6 -0
  174. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -0
  175. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +7 -0
  176. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -0
  177. package/dist/schema/state/sqlite/query-builder/astToSql.js +190 -0
  178. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -0
  179. package/dist/schema/state/sqlite/query-builder/impl.d.ts +7 -0
  180. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -0
  181. package/dist/schema/state/sqlite/query-builder/impl.js +286 -0
  182. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -0
  183. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +87 -0
  184. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -0
  185. package/dist/schema/state/sqlite/query-builder/impl.test.js +563 -0
  186. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -0
  187. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.d.ts +7 -0
  188. package/dist/schema/state/sqlite/query-builder/mod.d.ts.map +1 -0
  189. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.js +7 -0
  190. package/dist/schema/state/sqlite/query-builder/mod.js.map +1 -0
  191. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -0
  192. package/dist/schema/{schema-helpers.js → state/sqlite/schema-helpers.js} +1 -1
  193. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -0
  194. package/dist/schema/state/sqlite/system-tables.d.ts +574 -0
  195. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -0
  196. package/dist/schema/state/sqlite/system-tables.js +88 -0
  197. package/dist/schema/state/sqlite/system-tables.js.map +1 -0
  198. package/dist/schema/state/sqlite/table-def.d.ts +84 -0
  199. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -0
  200. package/dist/schema/state/sqlite/table-def.js +36 -0
  201. package/dist/schema/state/sqlite/table-def.js.map +1 -0
  202. package/dist/schema-management/common.d.ts +7 -7
  203. package/dist/schema-management/common.d.ts.map +1 -1
  204. package/dist/schema-management/common.js.map +1 -1
  205. package/dist/schema-management/migrations.d.ts +6 -6
  206. package/dist/schema-management/migrations.d.ts.map +1 -1
  207. package/dist/schema-management/migrations.js +27 -18
  208. package/dist/schema-management/migrations.js.map +1 -1
  209. package/dist/schema-management/validate-schema.d.ts +8 -0
  210. package/dist/schema-management/validate-schema.d.ts.map +1 -0
  211. package/dist/schema-management/validate-schema.js +39 -0
  212. package/dist/schema-management/validate-schema.js.map +1 -0
  213. package/dist/sql-queries/misc.d.ts.map +1 -1
  214. package/dist/sql-queries/sql-queries.d.ts +1 -1
  215. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  216. package/dist/sql-queries/sql-queries.js.map +1 -1
  217. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  218. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  219. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  220. package/dist/sql-queries/types.d.ts +2 -1
  221. package/dist/sql-queries/types.d.ts.map +1 -1
  222. package/dist/sql-queries/types.js.map +1 -1
  223. package/dist/sync/ClientSessionSyncProcessor.d.ts +40 -19
  224. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  225. package/dist/sync/ClientSessionSyncProcessor.js +149 -73
  226. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  227. package/dist/sync/next/compact-events.d.ts.map +1 -1
  228. package/dist/sync/next/compact-events.js +38 -35
  229. package/dist/sync/next/compact-events.js.map +1 -1
  230. package/dist/sync/next/facts.d.ts +21 -21
  231. package/dist/sync/next/facts.d.ts.map +1 -1
  232. package/dist/sync/next/facts.js +11 -11
  233. package/dist/sync/next/facts.js.map +1 -1
  234. package/dist/sync/next/history-dag-common.d.ts +9 -7
  235. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  236. package/dist/sync/next/history-dag-common.js +10 -5
  237. package/dist/sync/next/history-dag-common.js.map +1 -1
  238. package/dist/sync/next/history-dag.d.ts +0 -2
  239. package/dist/sync/next/history-dag.d.ts.map +1 -1
  240. package/dist/sync/next/history-dag.js +16 -14
  241. package/dist/sync/next/history-dag.js.map +1 -1
  242. package/dist/sync/next/rebase-events.d.ts +10 -8
  243. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  244. package/dist/sync/next/rebase-events.js +18 -10
  245. package/dist/sync/next/rebase-events.js.map +1 -1
  246. package/dist/sync/next/test/compact-events.calculator.test.js +39 -34
  247. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  248. package/dist/sync/next/test/compact-events.test.js +77 -77
  249. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  250. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +35 -25
  251. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  252. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +83 -38
  253. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  254. package/dist/sync/next/test/mod.d.ts +1 -1
  255. package/dist/sync/next/test/mod.d.ts.map +1 -1
  256. package/dist/sync/next/test/mod.js +1 -1
  257. package/dist/sync/next/test/mod.js.map +1 -1
  258. package/dist/sync/sync.d.ts +46 -21
  259. package/dist/sync/sync.d.ts.map +1 -1
  260. package/dist/sync/sync.js +10 -6
  261. package/dist/sync/sync.js.map +1 -1
  262. package/dist/sync/syncstate.d.ts +193 -84
  263. package/dist/sync/syncstate.d.ts.map +1 -1
  264. package/dist/sync/syncstate.js +305 -151
  265. package/dist/sync/syncstate.js.map +1 -1
  266. package/dist/sync/syncstate.test.js +267 -303
  267. package/dist/sync/syncstate.test.js.map +1 -1
  268. package/dist/sync/validate-push-payload.d.ts +2 -2
  269. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  270. package/dist/sync/validate-push-payload.js +4 -4
  271. package/dist/sync/validate-push-payload.js.map +1 -1
  272. package/dist/util.d.ts +2 -2
  273. package/dist/util.d.ts.map +1 -1
  274. package/dist/version.d.ts +3 -3
  275. package/dist/version.js +3 -3
  276. package/package.json +11 -4
  277. package/src/__tests__/fixture.ts +36 -15
  278. package/src/adapter-types.ts +107 -68
  279. package/src/debug-info.ts +1 -0
  280. package/src/devtools/devtools-messages-client-session.ts +142 -0
  281. package/src/devtools/devtools-messages-common.ts +115 -0
  282. package/src/devtools/devtools-messages-leader.ts +191 -0
  283. package/src/devtools/devtools-messages.ts +3 -246
  284. package/src/devtools/devtools-sessioninfo.ts +101 -0
  285. package/src/devtools/mod.ts +59 -0
  286. package/src/index.ts +7 -9
  287. package/src/leader-thread/LeaderSyncProcessor.ts +664 -394
  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 +227 -104
  291. package/src/leader-thread/make-leader-thread-layer.ts +121 -72
  292. package/src/leader-thread/materialize-event.ts +173 -0
  293. package/src/leader-thread/mod.ts +1 -1
  294. package/src/leader-thread/recreate-db.ts +33 -38
  295. package/src/leader-thread/shutdown-channel.ts +2 -4
  296. package/src/leader-thread/types.ts +84 -46
  297. package/src/make-client-session.ts +136 -0
  298. package/src/materializer-helper.ts +138 -0
  299. package/src/otel.ts +8 -0
  300. package/src/rematerialize-from-eventlog.ts +117 -0
  301. package/src/schema/EventDef.ts +227 -0
  302. package/src/schema/EventSequenceNumber.test.ts +12 -0
  303. package/src/schema/EventSequenceNumber.ts +121 -0
  304. package/src/schema/LiveStoreEvent.ts +240 -0
  305. package/src/schema/events.ts +1 -0
  306. package/src/schema/mod.ts +8 -6
  307. package/src/schema/schema.ts +88 -84
  308. package/src/schema/state/mod.ts +2 -0
  309. package/src/schema/state/sqlite/client-document-def.test.ts +238 -0
  310. package/src/schema/state/sqlite/client-document-def.ts +444 -0
  311. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +142 -0
  312. package/src/schema/state/sqlite/db-schema/ast/validate.ts +13 -0
  313. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  314. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -0
  315. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +242 -0
  316. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +222 -0
  317. package/src/schema/state/sqlite/db-schema/hash.ts +14 -0
  318. package/src/schema/state/sqlite/db-schema/mod.ts +2 -0
  319. package/src/schema/state/sqlite/mod.ts +73 -0
  320. package/src/schema/state/sqlite/query-builder/api.ts +440 -0
  321. package/src/schema/state/sqlite/query-builder/astToSql.ts +232 -0
  322. package/src/schema/state/sqlite/query-builder/impl.test.ts +617 -0
  323. package/src/schema/state/sqlite/query-builder/impl.ts +351 -0
  324. package/src/{query-builder → schema/state/sqlite/query-builder}/mod.ts +7 -0
  325. package/src/schema/{schema-helpers.ts → state/sqlite/schema-helpers.ts} +1 -1
  326. package/src/schema/state/sqlite/system-tables.ts +117 -0
  327. package/src/schema/state/sqlite/table-def.ts +197 -0
  328. package/src/schema-management/common.ts +7 -7
  329. package/src/schema-management/migrations.ts +37 -31
  330. package/src/schema-management/validate-schema.ts +61 -0
  331. package/src/sql-queries/sql-queries.ts +1 -1
  332. package/src/sql-queries/sql-query-builder.ts +1 -2
  333. package/src/sql-queries/types.ts +3 -1
  334. package/src/sync/ClientSessionSyncProcessor.ts +218 -94
  335. package/src/sync/next/compact-events.ts +38 -35
  336. package/src/sync/next/facts.ts +43 -41
  337. package/src/sync/next/history-dag-common.ts +17 -10
  338. package/src/sync/next/history-dag.ts +16 -17
  339. package/src/sync/next/rebase-events.ts +29 -17
  340. package/src/sync/next/test/compact-events.calculator.test.ts +46 -46
  341. package/src/sync/next/test/compact-events.test.ts +79 -79
  342. package/src/sync/next/test/event-fixtures.ts +228 -0
  343. package/src/sync/next/test/mod.ts +1 -1
  344. package/src/sync/sync.ts +46 -21
  345. package/src/sync/syncstate.test.ts +312 -345
  346. package/src/sync/syncstate.ts +414 -224
  347. package/src/sync/validate-push-payload.ts +6 -6
  348. package/src/version.ts +3 -3
  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 -13
  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/devtools-window-message.d.ts +0 -29
  362. package/dist/devtools/devtools-window-message.d.ts.map +0 -1
  363. package/dist/devtools/devtools-window-message.js +0 -33
  364. package/dist/devtools/devtools-window-message.js.map +0 -1
  365. package/dist/devtools/index.d.ts +0 -42
  366. package/dist/devtools/index.d.ts.map +0 -1
  367. package/dist/devtools/index.js +0 -48
  368. package/dist/devtools/index.js.map +0 -1
  369. package/dist/init-singleton-tables.d.ts +0 -4
  370. package/dist/init-singleton-tables.d.ts.map +0 -1
  371. package/dist/init-singleton-tables.js +0 -16
  372. package/dist/init-singleton-tables.js.map +0 -1
  373. package/dist/leader-thread/apply-mutation.d.ts +0 -11
  374. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  375. package/dist/leader-thread/apply-mutation.js +0 -107
  376. package/dist/leader-thread/apply-mutation.js.map +0 -1
  377. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  378. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  379. package/dist/leader-thread/leader-sync-processor.js +0 -430
  380. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  381. package/dist/leader-thread/mutationlog.d.ts +0 -10
  382. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  383. package/dist/leader-thread/mutationlog.js +0 -28
  384. package/dist/leader-thread/mutationlog.js.map +0 -1
  385. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  386. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  387. package/dist/leader-thread/pull-queue-set.js +0 -39
  388. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  389. package/dist/mutation.d.ts +0 -20
  390. package/dist/mutation.d.ts.map +0 -1
  391. package/dist/mutation.js +0 -57
  392. package/dist/mutation.js.map +0 -1
  393. package/dist/query-builder/api.d.ts +0 -190
  394. package/dist/query-builder/api.d.ts.map +0 -1
  395. package/dist/query-builder/api.js +0 -8
  396. package/dist/query-builder/api.js.map +0 -1
  397. package/dist/query-builder/impl.d.ts +0 -12
  398. package/dist/query-builder/impl.d.ts.map +0 -1
  399. package/dist/query-builder/impl.js +0 -244
  400. package/dist/query-builder/impl.js.map +0 -1
  401. package/dist/query-builder/impl.test.d.ts +0 -2
  402. package/dist/query-builder/impl.test.d.ts.map +0 -1
  403. package/dist/query-builder/impl.test.js +0 -212
  404. package/dist/query-builder/impl.test.js.map +0 -1
  405. package/dist/query-builder/mod.d.ts.map +0 -1
  406. package/dist/query-builder/mod.js.map +0 -1
  407. package/dist/query-info.d.ts +0 -38
  408. package/dist/query-info.d.ts.map +0 -1
  409. package/dist/query-info.js +0 -7
  410. package/dist/query-info.js.map +0 -1
  411. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  412. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  413. package/dist/rehydrate-from-mutationlog.js +0 -66
  414. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  415. package/dist/schema/EventId.d.ts +0 -39
  416. package/dist/schema/EventId.d.ts.map +0 -1
  417. package/dist/schema/EventId.js +0 -38
  418. package/dist/schema/EventId.js.map +0 -1
  419. package/dist/schema/EventId.test.d.ts +0 -2
  420. package/dist/schema/EventId.test.d.ts.map +0 -1
  421. package/dist/schema/EventId.test.js +0 -11
  422. package/dist/schema/EventId.test.js.map +0 -1
  423. package/dist/schema/MutationEvent.d.ts +0 -167
  424. package/dist/schema/MutationEvent.d.ts.map +0 -1
  425. package/dist/schema/MutationEvent.js +0 -72
  426. package/dist/schema/MutationEvent.js.map +0 -1
  427. package/dist/schema/MutationEvent.test.d.ts +0 -2
  428. package/dist/schema/MutationEvent.test.d.ts.map +0 -1
  429. package/dist/schema/MutationEvent.test.js +0 -2
  430. package/dist/schema/MutationEvent.test.js.map +0 -1
  431. package/dist/schema/mutations.d.ts +0 -107
  432. package/dist/schema/mutations.d.ts.map +0 -1
  433. package/dist/schema/mutations.js +0 -42
  434. package/dist/schema/mutations.js.map +0 -1
  435. package/dist/schema/schema-helpers.d.ts.map +0 -1
  436. package/dist/schema/schema-helpers.js.map +0 -1
  437. package/dist/schema/system-tables.d.ts +0 -399
  438. package/dist/schema/system-tables.d.ts.map +0 -1
  439. package/dist/schema/system-tables.js +0 -59
  440. package/dist/schema/system-tables.js.map +0 -1
  441. package/dist/schema/table-def.d.ts +0 -156
  442. package/dist/schema/table-def.d.ts.map +0 -1
  443. package/dist/schema/table-def.js +0 -79
  444. package/dist/schema/table-def.js.map +0 -1
  445. package/dist/schema-management/validate-mutation-defs.d.ts +0 -8
  446. package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
  447. package/dist/schema-management/validate-mutation-defs.js +0 -39
  448. package/dist/schema-management/validate-mutation-defs.js.map +0 -1
  449. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  450. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  451. package/dist/sync/client-session-sync-processor.js +0 -131
  452. package/dist/sync/client-session-sync-processor.js.map +0 -1
  453. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  454. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  455. package/src/derived-mutations.test.ts +0 -101
  456. package/src/derived-mutations.ts +0 -170
  457. package/src/devtools/devtools-bridge.ts +0 -14
  458. package/src/devtools/devtools-window-message.ts +0 -27
  459. package/src/devtools/index.ts +0 -48
  460. package/src/init-singleton-tables.ts +0 -24
  461. package/src/leader-thread/apply-mutation.ts +0 -161
  462. package/src/leader-thread/mutationlog.ts +0 -46
  463. package/src/leader-thread/pull-queue-set.ts +0 -58
  464. package/src/mutation.ts +0 -91
  465. package/src/query-builder/api.ts +0 -289
  466. package/src/query-builder/impl.test.ts +0 -239
  467. package/src/query-builder/impl.ts +0 -285
  468. package/src/query-info.ts +0 -78
  469. package/src/rehydrate-from-mutationlog.ts +0 -119
  470. package/src/schema/EventId.test.ts +0 -12
  471. package/src/schema/EventId.ts +0 -60
  472. package/src/schema/MutationEvent.ts +0 -185
  473. package/src/schema/mutations.ts +0 -192
  474. package/src/schema/system-tables.ts +0 -105
  475. package/src/schema/table-def.ts +0 -343
  476. package/src/schema-management/validate-mutation-defs.ts +0 -63
  477. package/src/sync/next/test/mutation-fixtures.ts +0 -224
  478. package/tsconfig.json +0 -11
  479. /package/dist/schema/{schema-helpers.d.ts → state/sqlite/schema-helpers.d.ts} +0 -0
@@ -0,0 +1,142 @@
1
+ import { Schema } from '@livestore/utils/effect'
2
+
3
+ import { DebugInfo } from '../debug-info.js'
4
+ import { EventSequenceNumber } from '../schema/mod.js'
5
+ import { PreparedBindValues } from '../util.js'
6
+ import { LSDClientSessionChannelMessage, LSDClientSessionReqResMessage } from './devtools-messages-common.js'
7
+
8
+ export class DebugInfoReq extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoReq', {}) {}
9
+
10
+ export class DebugInfoRes extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoRes', {
11
+ debugInfo: DebugInfo,
12
+ }) {}
13
+
14
+ export class DebugInfoHistorySubscribe extends LSDClientSessionReqResMessage(
15
+ 'LSD.ClientSession.DebugInfoHistorySubscribe',
16
+ {
17
+ subscriptionId: Schema.String,
18
+ },
19
+ ) {}
20
+
21
+ export class DebugInfoHistoryRes extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoHistoryRes', {
22
+ debugInfoHistory: Schema.Array(DebugInfo),
23
+ subscriptionId: Schema.String,
24
+ }) {}
25
+
26
+ export class DebugInfoHistoryUnsubscribe extends LSDClientSessionReqResMessage(
27
+ 'LSD.ClientSession.DebugInfoHistoryUnsubscribe',
28
+ {
29
+ subscriptionId: Schema.String,
30
+ },
31
+ ) {}
32
+
33
+ export class DebugInfoResetReq extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoResetReq', {}) {}
34
+
35
+ export class DebugInfoResetRes extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoResetRes', {}) {}
36
+
37
+ export class DebugInfoRerunQueryReq extends LSDClientSessionReqResMessage('LSD.ClientSession.DebugInfoRerunQueryReq', {
38
+ queryStr: Schema.String,
39
+ bindValues: Schema.UndefinedOr(PreparedBindValues),
40
+ queriedTables: Schema.ReadonlySet(Schema.String),
41
+ }) {}
42
+
43
+ export class DebugInfoRerunQueryRes extends LSDClientSessionReqResMessage(
44
+ 'LSD.ClientSession.DebugInfoRerunQueryRes',
45
+ {},
46
+ ) {}
47
+
48
+ export class SyncHeadSubscribe extends LSDClientSessionReqResMessage('LSD.ClientSession.SyncHeadSubscribe', {
49
+ subscriptionId: Schema.String,
50
+ }) {}
51
+ export class SyncHeadUnsubscribe extends LSDClientSessionReqResMessage('LSD.ClientSession.SyncHeadUnsubscribe', {
52
+ subscriptionId: Schema.String,
53
+ }) {}
54
+ export class SyncHeadRes extends LSDClientSessionReqResMessage('LSD.ClientSession.SyncHeadRes', {
55
+ local: EventSequenceNumber.EventSequenceNumber,
56
+ upstream: EventSequenceNumber.EventSequenceNumber,
57
+ subscriptionId: Schema.String,
58
+ }) {}
59
+
60
+ export class ReactivityGraphSubscribe extends LSDClientSessionReqResMessage(
61
+ 'LSD.ClientSession.ReactivityGraphSubscribe',
62
+ {
63
+ includeResults: Schema.Boolean,
64
+ subscriptionId: Schema.String,
65
+ },
66
+ ) {}
67
+
68
+ export class ReactivityGraphUnsubscribe extends LSDClientSessionReqResMessage(
69
+ 'LSD.ClientSession.ReactivityGraphUnsubscribe',
70
+ {
71
+ subscriptionId: Schema.String,
72
+ },
73
+ ) {}
74
+
75
+ export class ReactivityGraphRes extends LSDClientSessionReqResMessage('LSD.ClientSession.ReactivityGraphRes', {
76
+ reactivityGraph: Schema.Any,
77
+ subscriptionId: Schema.String,
78
+ }) {}
79
+
80
+ export class LiveQueriesSubscribe extends LSDClientSessionReqResMessage('LSD.ClientSession.LiveQueriesSubscribe', {
81
+ subscriptionId: Schema.String,
82
+ }) {}
83
+
84
+ export class LiveQueriesUnsubscribe extends LSDClientSessionReqResMessage('LSD.ClientSession.LiveQueriesUnsubscribe', {
85
+ subscriptionId: Schema.String,
86
+ }) {}
87
+
88
+ export class SerializedLiveQuery extends Schema.Struct({
89
+ _tag: Schema.Literal('computed', 'db', 'graphql', 'signal'),
90
+ id: Schema.Number,
91
+ label: Schema.String,
92
+ hash: Schema.String,
93
+ runs: Schema.Number,
94
+ executionTimes: Schema.Array(Schema.Number),
95
+ lastestResult: Schema.Any,
96
+ activeSubscriptions: Schema.Array(
97
+ Schema.Struct({ frames: Schema.Array(Schema.Struct({ name: Schema.String, filePath: Schema.String })) }),
98
+ ),
99
+ }) {}
100
+
101
+ export class LiveQueriesRes extends LSDClientSessionReqResMessage('LSD.ClientSession.LiveQueriesRes', {
102
+ liveQueries: Schema.Array(SerializedLiveQuery),
103
+ subscriptionId: Schema.String,
104
+ }) {}
105
+
106
+ export class Ping extends LSDClientSessionReqResMessage('LSD.ClientSession.Ping', {}) {}
107
+
108
+ export class Pong extends LSDClientSessionReqResMessage('LSD.ClientSession.Pong', {}) {}
109
+
110
+ export class Disconnect extends LSDClientSessionChannelMessage('LSD.ClientSession.Disconnect', {}) {}
111
+
112
+ export const MessageToApp = Schema.Union(
113
+ DebugInfoReq,
114
+ DebugInfoHistorySubscribe,
115
+ DebugInfoHistoryUnsubscribe,
116
+ DebugInfoResetReq,
117
+ DebugInfoRerunQueryReq,
118
+ ReactivityGraphSubscribe,
119
+ ReactivityGraphUnsubscribe,
120
+ LiveQueriesSubscribe,
121
+ LiveQueriesUnsubscribe,
122
+ Disconnect,
123
+ Ping,
124
+ SyncHeadSubscribe,
125
+ SyncHeadUnsubscribe,
126
+ ).annotations({ identifier: 'LSD.ClientSession.MessageToApp' })
127
+
128
+ export type MessageToApp = typeof MessageToApp.Type
129
+
130
+ export const MessageFromApp = Schema.Union(
131
+ DebugInfoRes,
132
+ DebugInfoHistoryRes,
133
+ DebugInfoResetRes,
134
+ DebugInfoRerunQueryRes,
135
+ ReactivityGraphRes,
136
+ LiveQueriesRes,
137
+ Disconnect,
138
+ Pong,
139
+ SyncHeadRes,
140
+ ).annotations({ identifier: 'LSD.ClientSession.MessageFromApp' })
141
+
142
+ export type MessageFromApp = typeof MessageFromApp.Type
@@ -0,0 +1,115 @@
1
+ import { Schema } from '@livestore/utils/effect'
2
+
3
+ import { liveStoreVersion as pkgVersion } from '../version.js'
4
+
5
+ export const NetworkStatus = Schema.Struct({
6
+ isConnected: Schema.Boolean,
7
+ timestampMs: Schema.Number,
8
+ /** Whether the network status devtools latch is closed. Used to simulate network disconnection. */
9
+ latchClosed: Schema.Boolean,
10
+ })
11
+
12
+ export type NetworkStatus = typeof NetworkStatus.Type
13
+
14
+ export const requestId = Schema.String
15
+ export const clientId = Schema.String
16
+ export const sessionId = Schema.String
17
+ export const liveStoreVersion = Schema.Literal(pkgVersion)
18
+
19
+ export const LSDMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
20
+ Schema.TaggedStruct(tag, {
21
+ liveStoreVersion,
22
+ ...fields,
23
+ }).annotations({ identifier: tag })
24
+
25
+ export const LSDChannelMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
26
+ LSDMessage(tag, {
27
+ clientId,
28
+ ...fields,
29
+ })
30
+
31
+ export const LSDClientSessionChannelMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(
32
+ tag: Tag,
33
+ fields: Fields,
34
+ ) =>
35
+ LSDMessage(tag, {
36
+ clientId,
37
+ sessionId,
38
+ ...fields,
39
+ })
40
+
41
+ export const LSDClientSessionReqResMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(
42
+ tag: Tag,
43
+ fields: Fields,
44
+ ) =>
45
+ LSDMessage(tag, {
46
+ clientId,
47
+ sessionId,
48
+ requestId,
49
+ ...fields,
50
+ })
51
+
52
+ export const LSDReqResMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
53
+ LSDChannelMessage(tag, {
54
+ requestId,
55
+ ...fields,
56
+ })
57
+
58
+ type DefaultFields = {
59
+ readonly requestId: typeof Schema.String
60
+ readonly liveStoreVersion: typeof liveStoreVersion
61
+ readonly clientId: typeof Schema.String
62
+ }
63
+
64
+ export type LeaderReqResSchema<
65
+ Tag extends string,
66
+ PayloadFields extends Schema.Struct.Fields,
67
+ SuccessFields extends Schema.Struct.Fields,
68
+ ErrorFields extends Schema.Struct.Fields = never,
69
+ > = {
70
+ Request: Schema.TaggedStruct<`${Tag}.Request`, PayloadFields & DefaultFields>
71
+ Response:
72
+ | Schema.TaggedStruct<`${Tag}.Response.Success`, SuccessFields & DefaultFields>
73
+ | (ErrorFields extends never ? never : Schema.TaggedStruct<`${Tag}.Response.Error`, ErrorFields & DefaultFields>)
74
+ Success: Schema.TaggedStruct<`${Tag}.Response.Success`, SuccessFields & DefaultFields>
75
+ Error: ErrorFields extends never ? never : Schema.TaggedStruct<`${Tag}.Response.Error`, ErrorFields & DefaultFields>
76
+ }
77
+
78
+ export const LeaderReqResMessage = <
79
+ Tag extends string,
80
+ PayloadFields extends Schema.Struct.Fields,
81
+ SuccessFields extends Schema.Struct.Fields,
82
+ ErrorFields extends Schema.Struct.Fields = never,
83
+ >(
84
+ tag: Tag,
85
+ fields: {
86
+ payload: PayloadFields
87
+ success: SuccessFields
88
+ error?: ErrorFields
89
+ },
90
+ ): LeaderReqResSchema<Tag, PayloadFields, SuccessFields, ErrorFields> => {
91
+ const Success = Schema.TaggedStruct(`${tag}.Response.Success`, {
92
+ requestId,
93
+ liveStoreVersion,
94
+ ...fields.success,
95
+ }).annotations({ identifier: `${tag}.Response.Success` })
96
+
97
+ const Error = fields.error
98
+ ? Schema.TaggedStruct(`${tag}.Response.Error`, {
99
+ requestId,
100
+ liveStoreVersion,
101
+ ...fields.error,
102
+ }).annotations({ identifier: `${tag}.Response.Error` })
103
+ : Schema.Never
104
+
105
+ return {
106
+ Request: Schema.TaggedStruct(`${tag}.Request`, {
107
+ requestId,
108
+ liveStoreVersion,
109
+ ...fields.payload,
110
+ }).annotations({ identifier: `${tag}.Request` }),
111
+ Response: Schema.Union(Success, Error),
112
+ Success,
113
+ Error,
114
+ } as any
115
+ }
@@ -0,0 +1,191 @@
1
+ import { Schema, Transferable } from '@livestore/utils/effect'
2
+
3
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
4
+ import { EventSequenceNumber } from '../schema/mod.js'
5
+ import * as SyncState from '../sync/syncstate.js'
6
+ import { LeaderReqResMessage, LSDMessage, LSDReqResMessage, NetworkStatus } from './devtools-messages-common.js'
7
+
8
+ export class ResetAllDataReq extends LSDReqResMessage('LSD.Leader.ResetAllDataReq', {
9
+ mode: Schema.Literal('all-data', 'only-app-db'),
10
+ }) {}
11
+
12
+ export class DatabaseFileInfoReq extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoReq', {}) {}
13
+
14
+ export class DatabaseFileInfo extends Schema.Struct({
15
+ fileSize: Schema.Number,
16
+ persistenceInfo: Schema.Struct({ fileName: Schema.String }, { key: Schema.String, value: Schema.Any }),
17
+ }) {}
18
+
19
+ export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
20
+ state: DatabaseFileInfo,
21
+ eventlog: DatabaseFileInfo,
22
+ }) {}
23
+
24
+ export class NetworkStatusSubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusSubscribe', {
25
+ subscriptionId: Schema.String,
26
+ }) {}
27
+ export class NetworkStatusUnsubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusUnsubscribe', {
28
+ subscriptionId: Schema.String,
29
+ }) {}
30
+
31
+ export class NetworkStatusRes extends LSDReqResMessage('LSD.Leader.NetworkStatusRes', {
32
+ networkStatus: NetworkStatus,
33
+ subscriptionId: Schema.String,
34
+ }) {}
35
+
36
+ export class SyncingInfoReq extends LSDReqResMessage('LSD.Leader.SyncingInfoReq', {}) {}
37
+
38
+ export class SyncingInfo extends Schema.Struct({
39
+ enabled: Schema.Boolean,
40
+ metadata: Schema.Record({ key: Schema.String, value: Schema.Any }),
41
+ }) {}
42
+
43
+ export class SyncingInfoRes extends LSDReqResMessage('LSD.Leader.SyncingInfoRes', {
44
+ syncingInfo: SyncingInfo,
45
+ }) {}
46
+
47
+ export class SyncHistorySubscribe extends LSDReqResMessage('LSD.Leader.SyncHistorySubscribe', {
48
+ subscriptionId: Schema.String,
49
+ }) {}
50
+ export class SyncHistoryUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHistoryUnsubscribe', {
51
+ subscriptionId: Schema.String,
52
+ }) {}
53
+ export class SyncHistoryRes extends LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
54
+ eventEncoded: LiveStoreEvent.AnyEncodedGlobal,
55
+ metadata: Schema.Option(Schema.JsonValue),
56
+ subscriptionId: Schema.String,
57
+ }) {}
58
+
59
+ export class SyncHeadSubscribe extends LSDReqResMessage('LSD.Leader.SyncHeadSubscribe', {
60
+ subscriptionId: Schema.String,
61
+ }) {}
62
+ export class SyncHeadUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHeadUnsubscribe', {
63
+ subscriptionId: Schema.String,
64
+ }) {}
65
+ export class SyncHeadRes extends LSDReqResMessage('LSD.Leader.SyncHeadRes', {
66
+ local: EventSequenceNumber.EventSequenceNumber,
67
+ upstream: EventSequenceNumber.EventSequenceNumber,
68
+ subscriptionId: Schema.String,
69
+ }) {}
70
+
71
+ export class SnapshotReq extends LSDReqResMessage('LSD.Leader.SnapshotReq', {}) {}
72
+
73
+ export class SnapshotRes extends LSDReqResMessage('LSD.Leader.SnapshotRes', {
74
+ snapshot: Transferable.Uint8Array,
75
+ }) {}
76
+
77
+ export const LoadDatabaseFile = LeaderReqResMessage('LSD.Leader.LoadDatabaseFile', {
78
+ payload: {
79
+ data: Transferable.Uint8Array,
80
+ },
81
+ success: {},
82
+ error: {
83
+ cause: Schema.Union(
84
+ Schema.TaggedStruct('unsupported-file', {}),
85
+ Schema.TaggedStruct('unsupported-database', {}),
86
+ Schema.TaggedStruct('unexpected-error', { cause: Schema.Defect }),
87
+ ),
88
+ },
89
+ })
90
+
91
+ // TODO refactor this to use push/pull semantics
92
+ export class SyncPull extends LSDMessage('LSD.Leader.SyncPull', {
93
+ payload: SyncState.PayloadUpstream,
94
+ }) {}
95
+
96
+ // TODO refactor this to use push/pull semantics
97
+ export class CommitEventReq extends LSDReqResMessage('LSD.Leader.CommitEventReq', {
98
+ eventEncoded: LiveStoreEvent.PartialAnyEncoded,
99
+ }) {}
100
+
101
+ export class CommitEventRes extends LSDReqResMessage('LSD.Leader.CommitEventRes', {}) {}
102
+
103
+ export class EventlogReq extends LSDReqResMessage('LSD.Leader.EventlogReq', {}) {}
104
+
105
+ export class EventlogRes extends LSDReqResMessage('LSD.Leader.EventlogRes', {
106
+ eventlog: Transferable.Uint8Array,
107
+ }) {}
108
+
109
+ export class Ping extends LSDReqResMessage('LSD.Leader.Ping', {}) {}
110
+
111
+ export class Pong extends LSDReqResMessage('LSD.Leader.Pong', {}) {}
112
+
113
+ export class Disconnect extends LSDReqResMessage('LSD.Leader.Disconnect', {}) {}
114
+
115
+ export const SetSyncLatch = LeaderReqResMessage('LSD.Leader.SetSyncLatch', {
116
+ payload: {
117
+ closeLatch: Schema.Boolean,
118
+ },
119
+ success: {},
120
+ })
121
+
122
+ export const ResetAllData = LeaderReqResMessage('LSD.Leader.ResetAllData', {
123
+ payload: {
124
+ mode: Schema.Literal('all-data', 'only-app-db'),
125
+ },
126
+ success: {},
127
+ })
128
+
129
+ // TODO move to `Schema.TaggedRequest` once new RPC is ready https://github.com/Effect-TS/effect/pull/4362
130
+ // export class DatabaseFileInfo_ extends Schema.TaggedRequest<DatabaseFileInfo_>()('LSD.Leader.DatabaseFileInfo', {
131
+ // payload: {
132
+ // requestId,
133
+ // liveStoreVersion,
134
+ // },
135
+ // success: DatabaseFileInfo,
136
+ // failure: UnexpectedError,
137
+ // }) {}
138
+
139
+ // export class NetworkStatus_ extends Schema.TaggedRequest<NetworkStatus_>()('LSD.Leader.NetworkStatus', {
140
+ // payload: {
141
+ // requestId,
142
+ // liveStoreVersion,
143
+ // },
144
+ // success: NetworkStatus,
145
+ // failure: UnexpectedError,
146
+ // }) {}
147
+
148
+ // export const MessageToApp_ = Schema.Union(DatabaseFileInfo_, NetworkStatus_)
149
+
150
+ // export type MessageToApp_ = typeof MessageToApp_.Type
151
+ //
152
+
153
+ export const MessageToApp = Schema.Union(
154
+ SnapshotReq,
155
+ LoadDatabaseFile.Request,
156
+ EventlogReq,
157
+ ResetAllData.Request,
158
+ NetworkStatusSubscribe,
159
+ NetworkStatusUnsubscribe,
160
+ Disconnect,
161
+ CommitEventReq,
162
+ Ping,
163
+ DatabaseFileInfoReq,
164
+ SyncHistorySubscribe,
165
+ SyncHistoryUnsubscribe,
166
+ SyncingInfoReq,
167
+ SyncHeadSubscribe,
168
+ SyncHeadUnsubscribe,
169
+ SetSyncLatch.Request,
170
+ ).annotations({ identifier: 'LSD.Leader.MessageToApp' })
171
+
172
+ export type MessageToApp = typeof MessageToApp.Type
173
+
174
+ export const MessageFromApp = Schema.Union(
175
+ SnapshotRes,
176
+ LoadDatabaseFile.Response,
177
+ EventlogRes,
178
+ Disconnect,
179
+ SyncPull,
180
+ NetworkStatusRes,
181
+ CommitEventRes,
182
+ Pong,
183
+ DatabaseFileInfoRes,
184
+ SyncHistoryRes,
185
+ SyncingInfoRes,
186
+ SyncHeadRes,
187
+ ResetAllData.Success,
188
+ SetSyncLatch.Success,
189
+ ).annotations({ identifier: 'LSD.Leader.MessageFromApp' })
190
+
191
+ export type MessageFromApp = typeof MessageFromApp.Type
@@ -1,246 +1,3 @@
1
- import { Schema, Transferable } from '@livestore/utils/effect'
2
-
3
- import { NetworkStatus } from '../adapter-types.js'
4
- import { DebugInfo } from '../debug-info.js'
5
- import * as MutationEvent from '../schema/MutationEvent.js'
6
- import { PreparedBindValues } from '../util.js'
7
- import { liveStoreVersion as pkgVersion } from '../version.js'
8
-
9
- const requestId = Schema.String
10
- const clientId = Schema.String
11
- const sessionId = Schema.String
12
- const liveStoreVersion = Schema.Literal(pkgVersion)
13
-
14
- const LSDMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
15
- Schema.TaggedStruct(tag, {
16
- liveStoreVersion,
17
- ...fields,
18
- }).annotations({ identifier: tag })
19
-
20
- const LSDChannelMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
21
- LSDMessage(tag, {
22
- ...fields,
23
- })
24
-
25
- const LSDStoreChannelMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
26
- LSDMessage(tag, {
27
- clientId,
28
- sessionId,
29
- ...fields,
30
- })
31
-
32
- const LSDStoreReqResMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
33
- LSDMessage(tag, {
34
- clientId,
35
- sessionId,
36
- requestId,
37
- ...fields,
38
- })
39
-
40
- const LSDReqResMessage = <Tag extends string, Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields) =>
41
- LSDChannelMessage(tag, {
42
- requestId,
43
- ...fields,
44
- })
45
-
46
- export class SnapshotReq extends LSDReqResMessage('LSD.Leader.SnapshotReq', {}) {}
47
-
48
- export class SnapshotRes extends LSDReqResMessage('LSD.Leader.SnapshotRes', {
49
- snapshot: Transferable.Uint8Array,
50
- }) {}
51
-
52
- export class LoadDatabaseFileReq extends LSDReqResMessage('LSD.Leader.LoadDatabaseFileReq', {
53
- data: Transferable.Uint8Array,
54
- }) {}
55
-
56
- export class LoadDatabaseFileRes extends LSDReqResMessage('LSD.Leader.LoadDatabaseFileRes', {
57
- status: Schema.Literal('ok', 'unsupported-file', 'unsupported-database'),
58
- }) {}
59
-
60
- export class DebugInfoReq extends LSDStoreReqResMessage('LSD.DebugInfoReq', {}) {}
61
-
62
- export class DebugInfoRes extends LSDStoreReqResMessage('LSD.DebugInfoRes', {
63
- debugInfo: DebugInfo,
64
- }) {}
65
-
66
- export class DebugInfoHistorySubscribe extends LSDStoreReqResMessage('LSD.DebugInfoHistorySubscribe', {}) {}
67
-
68
- export class DebugInfoHistoryRes extends LSDStoreReqResMessage('LSD.DebugInfoHistoryRes', {
69
- debugInfoHistory: Schema.Array(DebugInfo),
70
- }) {}
71
-
72
- export class DebugInfoHistoryUnsubscribe extends LSDStoreReqResMessage('LSD.DebugInfoHistoryUnsubscribe', {}) {}
73
-
74
- export class DebugInfoResetReq extends LSDStoreReqResMessage('LSD.DebugInfoResetReq', {}) {}
75
-
76
- export class DebugInfoResetRes extends LSDStoreReqResMessage('LSD.DebugInfoResetRes', {}) {}
77
-
78
- export class DebugInfoRerunQueryReq extends LSDStoreReqResMessage('LSD.DebugInfoRerunQueryReq', {
79
- queryStr: Schema.String,
80
- bindValues: Schema.UndefinedOr(PreparedBindValues),
81
- queriedTables: Schema.ReadonlySet(Schema.String),
82
- }) {}
83
-
84
- export class DebugInfoRerunQueryRes extends LSDStoreReqResMessage('LSD.DebugInfoRerunQueryRes', {}) {}
85
-
86
- // TODO refactor this to use push/pull semantics
87
- export class MutationBroadcast extends LSDMessage('LSD.Leader.MutationBroadcast', {
88
- mutationEventEncoded: MutationEvent.AnyEncoded,
89
- }) {}
90
-
91
- // TODO refactor this to use push/pull semantics
92
- export class RunMutationReq extends LSDReqResMessage('LSD.Leader.RunMutationReq', {
93
- mutationEventEncoded: MutationEvent.AnyEncoded.pipe(Schema.omit('id', 'parentId')),
94
- }) {}
95
-
96
- export class RunMutationRes extends LSDReqResMessage('LSD.Leader.RunMutationRes', {}) {}
97
-
98
- export class MutationLogReq extends LSDReqResMessage('LSD.Leader.MutationLogReq', {}) {}
99
-
100
- export class MutationLogRes extends LSDReqResMessage('LSD.Leader.MutationLogRes', {
101
- mutationLog: Transferable.Uint8Array,
102
- }) {}
103
-
104
- export class ReactivityGraphSubscribe extends LSDStoreReqResMessage('LSD.ReactivityGraphSubscribe', {
105
- includeResults: Schema.Boolean,
106
- }) {}
107
-
108
- export class ReactivityGraphUnsubscribe extends LSDStoreReqResMessage('LSD.ReactivityGraphUnsubscribe', {}) {}
109
-
110
- export class ReactivityGraphRes extends LSDStoreReqResMessage('LSD.ReactivityGraphRes', {
111
- reactivityGraph: Schema.Any,
112
- }) {}
113
-
114
- export class LiveQueriesSubscribe extends LSDStoreReqResMessage('LSD.LiveQueriesSubscribe', {}) {}
115
-
116
- export class LiveQueriesUnsubscribe extends LSDStoreReqResMessage('LSD.LiveQueriesUnsubscribe', {}) {}
117
-
118
- export class SerializedLiveQuery extends Schema.Struct({
119
- _tag: Schema.Literal('computed', 'db', 'graphql'),
120
- id: Schema.Number,
121
- label: Schema.String,
122
- runs: Schema.Number,
123
- executionTimes: Schema.Array(Schema.Number),
124
- lastestResult: Schema.Any,
125
- activeSubscriptions: Schema.Array(
126
- Schema.Struct({ frames: Schema.Array(Schema.Struct({ name: Schema.String, filePath: Schema.String })) }),
127
- ),
128
- }) {}
129
-
130
- export class LiveQueriesRes extends LSDStoreReqResMessage('LSD.LiveQueriesRes', {
131
- liveQueries: Schema.Array(SerializedLiveQuery),
132
- }) {}
133
-
134
- export class ResetAllDataReq extends LSDReqResMessage('LSD.Leader.ResetAllDataReq', {
135
- mode: Schema.Literal('all-data', 'only-app-db'),
136
- }) {}
137
-
138
- export class ResetAllDataRes extends LSDReqResMessage('LSD.Leader.ResetAllDataRes', {}) {}
139
-
140
- export class DatabaseFileInfoReq extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoReq', {}) {}
141
-
142
- export class DatabaseFileInfo extends Schema.Struct({
143
- fileSize: Schema.Number,
144
- persistenceInfo: Schema.Struct({ fileName: Schema.String }, { key: Schema.String, value: Schema.Any }),
145
- }) {}
146
-
147
- export class DatabaseFileInfoRes extends LSDReqResMessage('LSD.Leader.DatabaseFileInfoRes', {
148
- db: DatabaseFileInfo,
149
- mutationLog: DatabaseFileInfo,
150
- }) {}
151
-
152
- export class NetworkStatusSubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusSubscribe', {}) {}
153
- export class NetworkStatusUnsubscribe extends LSDReqResMessage('LSD.Leader.NetworkStatusUnsubscribe', {}) {}
154
-
155
- export class NetworkStatusRes extends LSDReqResMessage('LSD.Leader.NetworkStatusRes', {
156
- networkStatus: NetworkStatus,
157
- }) {}
158
-
159
- export class SyncingInfoReq extends LSDReqResMessage('LSD.Leader.SyncingInfoReq', {}) {}
160
-
161
- export class SyncingInfo extends Schema.Struct({
162
- enabled: Schema.Boolean,
163
- metadata: Schema.Record({ key: Schema.String, value: Schema.Any }),
164
- }) {}
165
-
166
- export class SyncingInfoRes extends LSDReqResMessage('LSD.Leader.SyncingInfoRes', {
167
- syncingInfo: SyncingInfo,
168
- }) {}
169
-
170
- export class SyncHistorySubscribe extends LSDReqResMessage('LSD.Leader.SyncHistorySubscribe', {}) {}
171
- export class SyncHistoryUnsubscribe extends LSDReqResMessage('LSD.Leader.SyncHistoryUnsubscribe', {}) {}
172
- export class SyncHistoryRes extends LSDReqResMessage('LSD.Leader.SyncHistoryRes', {
173
- mutationEventEncoded: MutationEvent.AnyEncodedGlobal,
174
- metadata: Schema.Option(Schema.JsonValue),
175
- }) {}
176
-
177
- export class Disconnect extends LSDStoreChannelMessage('LSD.Disconnect', {}) {}
178
-
179
- export class Ping extends LSDReqResMessage('LSD.Ping', {}) {}
180
-
181
- export class Pong extends LSDReqResMessage('LSD.Pong', {}) {}
182
-
183
- export const MessageToAppLeader = Schema.Union(
184
- SnapshotReq,
185
- LoadDatabaseFileReq,
186
- MutationLogReq,
187
- ResetAllDataReq,
188
- NetworkStatusSubscribe,
189
- NetworkStatusUnsubscribe,
190
- Disconnect,
191
- RunMutationReq,
192
- Ping,
193
- DatabaseFileInfoReq,
194
- SyncHistorySubscribe,
195
- SyncHistoryUnsubscribe,
196
- SyncingInfoReq,
197
- ).annotations({ identifier: 'LSD.MessageToAppLeader' })
198
-
199
- export type MessageToAppLeader = typeof MessageToAppLeader.Type
200
-
201
- export const MessageToAppClientSession = Schema.Union(
202
- DebugInfoReq,
203
- DebugInfoHistorySubscribe,
204
- DebugInfoHistoryUnsubscribe,
205
- DebugInfoResetReq,
206
- DebugInfoRerunQueryReq,
207
- ReactivityGraphSubscribe,
208
- ReactivityGraphUnsubscribe,
209
- LiveQueriesSubscribe,
210
- LiveQueriesUnsubscribe,
211
- Disconnect,
212
- // TODO also introduce a ping/pong protocol for the client session <> devtools connection
213
- // Ping,
214
- ).annotations({ identifier: 'LSD.MessageToAppClientSession' })
215
-
216
- export type MessageToAppClientSession = typeof MessageToAppClientSession.Type
217
-
218
- export const MessageFromAppLeader = Schema.Union(
219
- SnapshotRes,
220
- LoadDatabaseFileRes,
221
- MutationLogRes,
222
- ResetAllDataRes,
223
- Disconnect,
224
- MutationBroadcast,
225
- NetworkStatusRes,
226
- RunMutationRes,
227
- Pong,
228
- DatabaseFileInfoRes,
229
- SyncHistoryRes,
230
- SyncingInfoRes,
231
- ).annotations({ identifier: 'LSD.MessageFromAppLeader' })
232
-
233
- export type MessageFromAppLeader = typeof MessageFromAppLeader.Type
234
-
235
- export const MessageFromAppClientSession = Schema.Union(
236
- DebugInfoRes,
237
- DebugInfoHistoryRes,
238
- DebugInfoResetRes,
239
- DebugInfoRerunQueryRes,
240
- ReactivityGraphRes,
241
- LiveQueriesRes,
242
- Disconnect,
243
- // Pong,
244
- ).annotations({ identifier: 'LSD.MessageFromAppClientSession' })
245
-
246
- export type MessageFromAppClientSession = typeof MessageFromAppClientSession.Type
1
+ export * as ClientSession from './devtools-messages-client-session.js'
2
+ export * as Leader from './devtools-messages-leader.js'
3
+ export * from './devtools-messages-common.js'