@livestore/common 0.3.0-dev.4 → 0.3.0-dev.41

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