@livestore/common 0.3.0-dev.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +83 -221
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/__tests__/fixture.js +33 -11
  5. package/dist/__tests__/fixture.js.map +1 -1
  6. package/dist/adapter-types.d.ts +120 -64
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +39 -8
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/bounded-collections.d.ts.map +1 -1
  11. package/dist/debug-info.d.ts +1 -1
  12. package/dist/debug-info.d.ts.map +1 -1
  13. package/dist/debug-info.js +1 -0
  14. package/dist/debug-info.js.map +1 -1
  15. package/dist/devtools/devtools-messages-client-session.d.ts +390 -0
  16. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
  17. package/dist/devtools/devtools-messages-client-session.js +97 -0
  18. package/dist/devtools/devtools-messages-client-session.js.map +1 -0
  19. package/dist/devtools/devtools-messages-common.d.ts +68 -0
  20. package/dist/devtools/devtools-messages-common.d.ts.map +1 -0
  21. package/dist/devtools/devtools-messages-common.js +60 -0
  22. package/dist/devtools/devtools-messages-common.js.map +1 -0
  23. package/dist/devtools/devtools-messages-leader.d.ts +394 -0
  24. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -0
  25. package/dist/devtools/devtools-messages-leader.js +147 -0
  26. package/dist/devtools/devtools-messages-leader.js.map +1 -0
  27. package/dist/devtools/devtools-messages.d.ts +3 -580
  28. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  29. package/dist/devtools/devtools-messages.js +3 -174
  30. package/dist/devtools/devtools-messages.js.map +1 -1
  31. package/dist/devtools/devtools-sessioninfo.d.ts +32 -0
  32. package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
  33. package/dist/devtools/devtools-sessioninfo.js +36 -0
  34. package/dist/devtools/devtools-sessioninfo.js.map +1 -0
  35. package/dist/devtools/mod.d.ts +55 -0
  36. package/dist/devtools/mod.d.ts.map +1 -0
  37. package/dist/devtools/mod.js +33 -0
  38. package/dist/devtools/mod.js.map +1 -0
  39. package/dist/index.d.ts +7 -9
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +7 -9
  42. package/dist/index.js.map +1 -1
  43. package/dist/leader-thread/LeaderSyncProcessor.d.ts +36 -11
  44. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  45. package/dist/leader-thread/LeaderSyncProcessor.js +426 -252
  46. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  47. package/dist/leader-thread/connection.d.ts +34 -6
  48. package/dist/leader-thread/connection.d.ts.map +1 -1
  49. package/dist/leader-thread/connection.js +22 -7
  50. package/dist/leader-thread/connection.js.map +1 -1
  51. package/dist/leader-thread/eventlog.d.ts +27 -0
  52. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  53. package/dist/leader-thread/eventlog.js +119 -0
  54. package/dist/leader-thread/eventlog.js.map +1 -0
  55. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  56. package/dist/leader-thread/leader-worker-devtools.js +155 -80
  57. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  58. package/dist/leader-thread/make-leader-thread-layer.d.ts +22 -9
  59. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  60. package/dist/leader-thread/make-leader-thread-layer.js +67 -45
  61. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  62. package/dist/leader-thread/materialize-event.d.ts +16 -0
  63. package/dist/leader-thread/materialize-event.d.ts.map +1 -0
  64. package/dist/leader-thread/materialize-event.js +109 -0
  65. package/dist/leader-thread/materialize-event.js.map +1 -0
  66. package/dist/leader-thread/mod.d.ts +1 -1
  67. package/dist/leader-thread/mod.d.ts.map +1 -1
  68. package/dist/leader-thread/mod.js +1 -1
  69. package/dist/leader-thread/mod.js.map +1 -1
  70. package/dist/leader-thread/recreate-db.d.ts +4 -2
  71. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  72. package/dist/leader-thread/recreate-db.js +28 -32
  73. package/dist/leader-thread/recreate-db.js.map +1 -1
  74. package/dist/leader-thread/shutdown-channel.d.ts +2 -5
  75. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  76. package/dist/leader-thread/shutdown-channel.js +2 -4
  77. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  78. package/dist/leader-thread/types.d.ts +79 -38
  79. package/dist/leader-thread/types.d.ts.map +1 -1
  80. package/dist/leader-thread/types.js +1 -3
  81. package/dist/leader-thread/types.js.map +1 -1
  82. package/dist/make-client-session.d.ts +23 -0
  83. package/dist/make-client-session.d.ts.map +1 -0
  84. package/dist/make-client-session.js +57 -0
  85. package/dist/make-client-session.js.map +1 -0
  86. package/dist/materializer-helper.d.ts +23 -0
  87. package/dist/materializer-helper.d.ts.map +1 -0
  88. package/dist/materializer-helper.js +86 -0
  89. package/dist/materializer-helper.js.map +1 -0
  90. package/dist/otel.d.ts +2 -0
  91. package/dist/otel.d.ts.map +1 -1
  92. package/dist/otel.js +5 -0
  93. package/dist/otel.js.map +1 -1
  94. package/dist/rematerialize-from-eventlog.d.ts +14 -0
  95. package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
  96. package/dist/rematerialize-from-eventlog.js +64 -0
  97. package/dist/rematerialize-from-eventlog.js.map +1 -0
  98. package/dist/schema/EventDef.d.ts +146 -0
  99. package/dist/schema/EventDef.d.ts.map +1 -0
  100. package/dist/schema/EventDef.js +58 -0
  101. package/dist/schema/EventDef.js.map +1 -0
  102. package/dist/schema/EventSequenceNumber.d.ts +57 -0
  103. package/dist/schema/EventSequenceNumber.d.ts.map +1 -0
  104. package/dist/schema/EventSequenceNumber.js +82 -0
  105. package/dist/schema/EventSequenceNumber.js.map +1 -0
  106. package/dist/schema/EventSequenceNumber.test.d.ts +2 -0
  107. package/dist/schema/EventSequenceNumber.test.d.ts.map +1 -0
  108. package/dist/schema/EventSequenceNumber.test.js +11 -0
  109. package/dist/schema/EventSequenceNumber.test.js.map +1 -0
  110. package/dist/schema/LiveStoreEvent.d.ts +257 -0
  111. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  112. package/dist/schema/LiveStoreEvent.js +117 -0
  113. package/dist/schema/LiveStoreEvent.js.map +1 -0
  114. package/dist/schema/events.d.ts +2 -0
  115. package/dist/schema/events.d.ts.map +1 -0
  116. package/dist/schema/events.js +2 -0
  117. package/dist/schema/events.js.map +1 -0
  118. package/dist/schema/mod.d.ts +8 -6
  119. package/dist/schema/mod.d.ts.map +1 -1
  120. package/dist/schema/mod.js +8 -6
  121. package/dist/schema/mod.js.map +1 -1
  122. package/dist/schema/schema.d.ts +50 -32
  123. package/dist/schema/schema.d.ts.map +1 -1
  124. package/dist/schema/schema.js +36 -43
  125. package/dist/schema/schema.js.map +1 -1
  126. package/dist/schema/state/mod.d.ts +3 -0
  127. package/dist/schema/state/mod.d.ts.map +1 -0
  128. package/dist/schema/state/mod.js +3 -0
  129. package/dist/schema/state/mod.js.map +1 -0
  130. package/dist/schema/state/sqlite/client-document-def.d.ts +223 -0
  131. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -0
  132. package/dist/schema/state/sqlite/client-document-def.js +170 -0
  133. package/dist/schema/state/sqlite/client-document-def.js.map +1 -0
  134. package/dist/schema/state/sqlite/client-document-def.test.d.ts +2 -0
  135. package/dist/schema/state/sqlite/client-document-def.test.d.ts.map +1 -0
  136. package/dist/schema/state/sqlite/client-document-def.test.js +201 -0
  137. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -0
  138. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +69 -0
  139. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -0
  140. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +71 -0
  141. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -0
  142. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +3 -0
  143. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -0
  144. package/dist/schema/state/sqlite/db-schema/ast/validate.js +12 -0
  145. package/dist/schema/state/sqlite/db-schema/ast/validate.js.map +1 -0
  146. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +90 -0
  147. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -0
  148. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +87 -0
  149. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -0
  150. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts +2 -0
  151. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  152. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +29 -0
  153. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -0
  154. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +90 -0
  155. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -0
  156. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +41 -0
  157. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -0
  158. package/dist/schema/state/sqlite/db-schema/hash.d.ts +2 -0
  159. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -0
  160. package/dist/schema/state/sqlite/db-schema/hash.js +14 -0
  161. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -0
  162. package/dist/schema/state/sqlite/db-schema/mod.d.ts +3 -0
  163. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -0
  164. package/dist/schema/state/sqlite/db-schema/mod.js +3 -0
  165. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -0
  166. package/dist/schema/state/sqlite/mod.d.ts +17 -0
  167. package/dist/schema/state/sqlite/mod.d.ts.map +1 -0
  168. package/dist/schema/state/sqlite/mod.js +41 -0
  169. package/dist/schema/state/sqlite/mod.js.map +1 -0
  170. package/dist/schema/state/sqlite/query-builder/api.d.ts +294 -0
  171. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -0
  172. package/dist/schema/state/sqlite/query-builder/api.js +6 -0
  173. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -0
  174. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +7 -0
  175. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -0
  176. package/dist/schema/state/sqlite/query-builder/astToSql.js +190 -0
  177. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -0
  178. package/dist/schema/state/sqlite/query-builder/impl.d.ts +7 -0
  179. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -0
  180. package/dist/schema/state/sqlite/query-builder/impl.js +286 -0
  181. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -0
  182. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +87 -0
  183. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -0
  184. package/dist/schema/state/sqlite/query-builder/impl.test.js +563 -0
  185. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -0
  186. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.d.ts +7 -0
  187. package/dist/schema/state/sqlite/query-builder/mod.d.ts.map +1 -0
  188. package/dist/{query-builder → schema/state/sqlite/query-builder}/mod.js +7 -0
  189. package/dist/schema/state/sqlite/query-builder/mod.js.map +1 -0
  190. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -0
  191. package/dist/schema/{schema-helpers.js → state/sqlite/schema-helpers.js} +1 -1
  192. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -0
  193. package/dist/schema/state/sqlite/system-tables.d.ts +574 -0
  194. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -0
  195. package/dist/schema/state/sqlite/system-tables.js +88 -0
  196. package/dist/schema/state/sqlite/system-tables.js.map +1 -0
  197. package/dist/schema/state/sqlite/table-def.d.ts +84 -0
  198. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -0
  199. package/dist/schema/state/sqlite/table-def.js +36 -0
  200. package/dist/schema/state/sqlite/table-def.js.map +1 -0
  201. package/dist/schema-management/common.d.ts +7 -7
  202. package/dist/schema-management/common.d.ts.map +1 -1
  203. package/dist/schema-management/common.js.map +1 -1
  204. package/dist/schema-management/migrations.d.ts +6 -6
  205. package/dist/schema-management/migrations.d.ts.map +1 -1
  206. package/dist/schema-management/migrations.js +27 -18
  207. package/dist/schema-management/migrations.js.map +1 -1
  208. package/dist/schema-management/validate-schema.d.ts +8 -0
  209. package/dist/schema-management/validate-schema.d.ts.map +1 -0
  210. package/dist/schema-management/validate-schema.js +39 -0
  211. package/dist/schema-management/validate-schema.js.map +1 -0
  212. package/dist/sql-queries/misc.d.ts.map +1 -1
  213. package/dist/sql-queries/sql-queries.d.ts +1 -1
  214. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  215. package/dist/sql-queries/sql-queries.js.map +1 -1
  216. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  217. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  218. package/dist/sql-queries/sql-query-builder.js.map +1 -1
  219. package/dist/sql-queries/types.d.ts +2 -1
  220. package/dist/sql-queries/types.d.ts.map +1 -1
  221. package/dist/sql-queries/types.js.map +1 -1
  222. package/dist/sync/ClientSessionSyncProcessor.d.ts +40 -19
  223. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  224. package/dist/sync/ClientSessionSyncProcessor.js +149 -73
  225. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  226. package/dist/sync/next/compact-events.d.ts.map +1 -1
  227. package/dist/sync/next/compact-events.js +38 -35
  228. package/dist/sync/next/compact-events.js.map +1 -1
  229. package/dist/sync/next/facts.d.ts +21 -21
  230. package/dist/sync/next/facts.d.ts.map +1 -1
  231. package/dist/sync/next/facts.js +11 -11
  232. package/dist/sync/next/facts.js.map +1 -1
  233. package/dist/sync/next/history-dag-common.d.ts +9 -7
  234. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  235. package/dist/sync/next/history-dag-common.js +10 -5
  236. package/dist/sync/next/history-dag-common.js.map +1 -1
  237. package/dist/sync/next/history-dag.d.ts +0 -2
  238. package/dist/sync/next/history-dag.d.ts.map +1 -1
  239. package/dist/sync/next/history-dag.js +16 -14
  240. package/dist/sync/next/history-dag.js.map +1 -1
  241. package/dist/sync/next/rebase-events.d.ts +10 -8
  242. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  243. package/dist/sync/next/rebase-events.js +18 -10
  244. package/dist/sync/next/rebase-events.js.map +1 -1
  245. package/dist/sync/next/test/compact-events.calculator.test.js +39 -34
  246. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  247. package/dist/sync/next/test/compact-events.test.js +77 -77
  248. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  249. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +35 -25
  250. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  251. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +81 -38
  252. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  253. package/dist/sync/next/test/mod.d.ts +1 -1
  254. package/dist/sync/next/test/mod.d.ts.map +1 -1
  255. package/dist/sync/next/test/mod.js +1 -1
  256. package/dist/sync/next/test/mod.js.map +1 -1
  257. package/dist/sync/sync.d.ts +46 -21
  258. package/dist/sync/sync.d.ts.map +1 -1
  259. package/dist/sync/sync.js +10 -6
  260. package/dist/sync/sync.js.map +1 -1
  261. package/dist/sync/syncstate.d.ts +193 -84
  262. package/dist/sync/syncstate.d.ts.map +1 -1
  263. package/dist/sync/syncstate.js +305 -151
  264. package/dist/sync/syncstate.js.map +1 -1
  265. package/dist/sync/syncstate.test.js +267 -303
  266. package/dist/sync/syncstate.test.js.map +1 -1
  267. package/dist/sync/validate-push-payload.d.ts +2 -2
  268. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  269. package/dist/sync/validate-push-payload.js +4 -4
  270. package/dist/sync/validate-push-payload.js.map +1 -1
  271. package/dist/util.d.ts +2 -2
  272. package/dist/util.d.ts.map +1 -1
  273. package/dist/version.d.ts +2 -2
  274. package/dist/version.d.ts.map +1 -1
  275. package/dist/version.js +2 -2
  276. package/dist/version.js.map +1 -1
  277. package/package.json +10 -4
  278. package/src/__tests__/fixture.ts +36 -15
  279. package/src/adapter-types.ts +107 -68
  280. package/src/debug-info.ts +1 -0
  281. package/src/devtools/devtools-messages-client-session.ts +142 -0
  282. package/src/devtools/devtools-messages-common.ts +115 -0
  283. package/src/devtools/devtools-messages-leader.ts +191 -0
  284. package/src/devtools/devtools-messages.ts +3 -246
  285. package/src/devtools/devtools-sessioninfo.ts +101 -0
  286. package/src/devtools/mod.ts +59 -0
  287. package/src/index.ts +7 -9
  288. package/src/leader-thread/LeaderSyncProcessor.ts +664 -394
  289. package/src/leader-thread/connection.ts +54 -9
  290. package/src/leader-thread/eventlog.ts +199 -0
  291. package/src/leader-thread/leader-worker-devtools.ts +227 -104
  292. package/src/leader-thread/make-leader-thread-layer.ts +121 -72
  293. package/src/leader-thread/materialize-event.ts +173 -0
  294. package/src/leader-thread/mod.ts +1 -1
  295. package/src/leader-thread/recreate-db.ts +33 -38
  296. package/src/leader-thread/shutdown-channel.ts +2 -4
  297. package/src/leader-thread/types.ts +84 -46
  298. package/src/make-client-session.ts +136 -0
  299. package/src/materializer-helper.ts +138 -0
  300. package/src/otel.ts +8 -0
  301. package/src/rematerialize-from-eventlog.ts +117 -0
  302. package/src/schema/EventDef.ts +227 -0
  303. package/src/schema/EventSequenceNumber.test.ts +12 -0
  304. package/src/schema/EventSequenceNumber.ts +121 -0
  305. package/src/schema/LiveStoreEvent.ts +240 -0
  306. package/src/schema/events.ts +1 -0
  307. package/src/schema/mod.ts +8 -6
  308. package/src/schema/schema.ts +88 -84
  309. package/src/schema/state/mod.ts +2 -0
  310. package/src/schema/state/sqlite/client-document-def.test.ts +238 -0
  311. package/src/schema/state/sqlite/client-document-def.ts +444 -0
  312. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +142 -0
  313. package/src/schema/state/sqlite/db-schema/ast/validate.ts +13 -0
  314. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
  315. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +35 -0
  316. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +242 -0
  317. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +222 -0
  318. package/src/schema/state/sqlite/db-schema/hash.ts +14 -0
  319. package/src/schema/state/sqlite/db-schema/mod.ts +2 -0
  320. package/src/schema/state/sqlite/mod.ts +73 -0
  321. package/src/schema/state/sqlite/query-builder/api.ts +440 -0
  322. package/src/schema/state/sqlite/query-builder/astToSql.ts +232 -0
  323. package/src/schema/state/sqlite/query-builder/impl.test.ts +617 -0
  324. package/src/schema/state/sqlite/query-builder/impl.ts +351 -0
  325. package/src/{query-builder → schema/state/sqlite/query-builder}/mod.ts +7 -0
  326. package/src/schema/{schema-helpers.ts → state/sqlite/schema-helpers.ts} +1 -1
  327. package/src/schema/state/sqlite/system-tables.ts +117 -0
  328. package/src/schema/state/sqlite/table-def.ts +197 -0
  329. package/src/schema-management/common.ts +7 -7
  330. package/src/schema-management/migrations.ts +37 -31
  331. package/src/schema-management/validate-schema.ts +61 -0
  332. package/src/sql-queries/sql-queries.ts +1 -1
  333. package/src/sql-queries/sql-query-builder.ts +1 -2
  334. package/src/sql-queries/types.ts +3 -1
  335. package/src/sync/ClientSessionSyncProcessor.ts +218 -94
  336. package/src/sync/next/compact-events.ts +38 -35
  337. package/src/sync/next/facts.ts +43 -41
  338. package/src/sync/next/history-dag-common.ts +17 -10
  339. package/src/sync/next/history-dag.ts +16 -17
  340. package/src/sync/next/rebase-events.ts +29 -17
  341. package/src/sync/next/test/compact-events.calculator.test.ts +46 -46
  342. package/src/sync/next/test/compact-events.test.ts +79 -79
  343. package/src/sync/next/test/event-fixtures.ts +226 -0
  344. package/src/sync/next/test/mod.ts +1 -1
  345. package/src/sync/sync.ts +46 -21
  346. package/src/sync/syncstate.test.ts +312 -345
  347. package/src/sync/syncstate.ts +414 -224
  348. package/src/sync/validate-push-payload.ts +6 -6
  349. package/src/version.ts +2 -2
  350. package/dist/derived-mutations.d.ts +0 -109
  351. package/dist/derived-mutations.d.ts.map +0 -1
  352. package/dist/derived-mutations.js +0 -54
  353. package/dist/derived-mutations.js.map +0 -1
  354. package/dist/derived-mutations.test.d.ts +0 -2
  355. package/dist/derived-mutations.test.d.ts.map +0 -1
  356. package/dist/derived-mutations.test.js +0 -93
  357. package/dist/derived-mutations.test.js.map +0 -1
  358. package/dist/devtools/devtools-bridge.d.ts +0 -13
  359. package/dist/devtools/devtools-bridge.d.ts.map +0 -1
  360. package/dist/devtools/devtools-bridge.js +0 -2
  361. package/dist/devtools/devtools-bridge.js.map +0 -1
  362. package/dist/devtools/devtools-window-message.d.ts +0 -29
  363. package/dist/devtools/devtools-window-message.d.ts.map +0 -1
  364. package/dist/devtools/devtools-window-message.js +0 -33
  365. package/dist/devtools/devtools-window-message.js.map +0 -1
  366. package/dist/devtools/index.d.ts +0 -42
  367. package/dist/devtools/index.d.ts.map +0 -1
  368. package/dist/devtools/index.js +0 -48
  369. package/dist/devtools/index.js.map +0 -1
  370. package/dist/init-singleton-tables.d.ts +0 -4
  371. package/dist/init-singleton-tables.d.ts.map +0 -1
  372. package/dist/init-singleton-tables.js +0 -16
  373. package/dist/init-singleton-tables.js.map +0 -1
  374. package/dist/leader-thread/apply-mutation.d.ts +0 -11
  375. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  376. package/dist/leader-thread/apply-mutation.js +0 -107
  377. package/dist/leader-thread/apply-mutation.js.map +0 -1
  378. package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
  379. package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
  380. package/dist/leader-thread/leader-sync-processor.js +0 -430
  381. package/dist/leader-thread/leader-sync-processor.js.map +0 -1
  382. package/dist/leader-thread/mutationlog.d.ts +0 -10
  383. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  384. package/dist/leader-thread/mutationlog.js +0 -28
  385. package/dist/leader-thread/mutationlog.js.map +0 -1
  386. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  387. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  388. package/dist/leader-thread/pull-queue-set.js +0 -39
  389. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  390. package/dist/mutation.d.ts +0 -20
  391. package/dist/mutation.d.ts.map +0 -1
  392. package/dist/mutation.js +0 -57
  393. package/dist/mutation.js.map +0 -1
  394. package/dist/query-builder/api.d.ts +0 -190
  395. package/dist/query-builder/api.d.ts.map +0 -1
  396. package/dist/query-builder/api.js +0 -8
  397. package/dist/query-builder/api.js.map +0 -1
  398. package/dist/query-builder/impl.d.ts +0 -12
  399. package/dist/query-builder/impl.d.ts.map +0 -1
  400. package/dist/query-builder/impl.js +0 -244
  401. package/dist/query-builder/impl.js.map +0 -1
  402. package/dist/query-builder/impl.test.d.ts +0 -2
  403. package/dist/query-builder/impl.test.d.ts.map +0 -1
  404. package/dist/query-builder/impl.test.js +0 -212
  405. package/dist/query-builder/impl.test.js.map +0 -1
  406. package/dist/query-builder/mod.d.ts.map +0 -1
  407. package/dist/query-builder/mod.js.map +0 -1
  408. package/dist/query-info.d.ts +0 -38
  409. package/dist/query-info.d.ts.map +0 -1
  410. package/dist/query-info.js +0 -7
  411. package/dist/query-info.js.map +0 -1
  412. package/dist/rehydrate-from-mutationlog.d.ts +0 -14
  413. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  414. package/dist/rehydrate-from-mutationlog.js +0 -66
  415. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  416. package/dist/schema/EventId.d.ts +0 -39
  417. package/dist/schema/EventId.d.ts.map +0 -1
  418. package/dist/schema/EventId.js +0 -38
  419. package/dist/schema/EventId.js.map +0 -1
  420. package/dist/schema/EventId.test.d.ts +0 -2
  421. package/dist/schema/EventId.test.d.ts.map +0 -1
  422. package/dist/schema/EventId.test.js +0 -11
  423. package/dist/schema/EventId.test.js.map +0 -1
  424. package/dist/schema/MutationEvent.d.ts +0 -167
  425. package/dist/schema/MutationEvent.d.ts.map +0 -1
  426. package/dist/schema/MutationEvent.js +0 -72
  427. package/dist/schema/MutationEvent.js.map +0 -1
  428. package/dist/schema/MutationEvent.test.d.ts +0 -2
  429. package/dist/schema/MutationEvent.test.d.ts.map +0 -1
  430. package/dist/schema/MutationEvent.test.js +0 -2
  431. package/dist/schema/MutationEvent.test.js.map +0 -1
  432. package/dist/schema/mutations.d.ts +0 -107
  433. package/dist/schema/mutations.d.ts.map +0 -1
  434. package/dist/schema/mutations.js +0 -42
  435. package/dist/schema/mutations.js.map +0 -1
  436. package/dist/schema/schema-helpers.d.ts.map +0 -1
  437. package/dist/schema/schema-helpers.js.map +0 -1
  438. package/dist/schema/system-tables.d.ts +0 -399
  439. package/dist/schema/system-tables.d.ts.map +0 -1
  440. package/dist/schema/system-tables.js +0 -59
  441. package/dist/schema/system-tables.js.map +0 -1
  442. package/dist/schema/table-def.d.ts +0 -156
  443. package/dist/schema/table-def.d.ts.map +0 -1
  444. package/dist/schema/table-def.js +0 -79
  445. package/dist/schema/table-def.js.map +0 -1
  446. package/dist/schema-management/validate-mutation-defs.d.ts +0 -8
  447. package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
  448. package/dist/schema-management/validate-mutation-defs.js +0 -39
  449. package/dist/schema-management/validate-mutation-defs.js.map +0 -1
  450. package/dist/sync/client-session-sync-processor.d.ts +0 -45
  451. package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
  452. package/dist/sync/client-session-sync-processor.js +0 -131
  453. package/dist/sync/client-session-sync-processor.js.map +0 -1
  454. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  455. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  456. package/src/derived-mutations.test.ts +0 -101
  457. package/src/derived-mutations.ts +0 -170
  458. package/src/devtools/devtools-bridge.ts +0 -14
  459. package/src/devtools/devtools-window-message.ts +0 -27
  460. package/src/devtools/index.ts +0 -48
  461. package/src/init-singleton-tables.ts +0 -24
  462. package/src/leader-thread/apply-mutation.ts +0 -161
  463. package/src/leader-thread/mutationlog.ts +0 -46
  464. package/src/leader-thread/pull-queue-set.ts +0 -58
  465. package/src/mutation.ts +0 -91
  466. package/src/query-builder/api.ts +0 -289
  467. package/src/query-builder/impl.test.ts +0 -239
  468. package/src/query-builder/impl.ts +0 -285
  469. package/src/query-info.ts +0 -78
  470. package/src/rehydrate-from-mutationlog.ts +0 -119
  471. package/src/schema/EventId.test.ts +0 -12
  472. package/src/schema/EventId.ts +0 -60
  473. package/src/schema/MutationEvent.ts +0 -185
  474. package/src/schema/mutations.ts +0 -192
  475. package/src/schema/system-tables.ts +0 -105
  476. package/src/schema/table-def.ts +0 -343
  477. package/src/schema-management/validate-mutation-defs.ts +0 -63
  478. package/src/sync/next/test/mutation-fixtures.ts +0 -224
  479. package/tsconfig.json +0 -11
  480. /package/dist/schema/{schema-helpers.d.ts → state/sqlite/schema-helpers.d.ts} +0 -0
@@ -0,0 +1,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'