@livestore/common 0.4.0-dev.17 → 0.4.0-dev.19

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 (290) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +10 -10
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/adapter-types.d.ts +5 -5
  5. package/dist/adapter-types.d.ts.map +1 -1
  6. package/dist/devtools/devtools-messages-client-session.d.ts +28 -23
  7. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  8. package/dist/devtools/devtools-messages-client-session.js +2 -2
  9. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  10. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  11. package/dist/devtools/devtools-messages-leader.d.ts +33 -28
  12. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  13. package/dist/devtools/devtools-messages-leader.js +8 -8
  14. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  15. package/dist/errors.d.ts +6 -6
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +7 -7
  18. package/dist/errors.js.map +1 -1
  19. package/dist/leader-thread/LeaderSyncProcessor.d.ts +2 -2
  20. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  21. package/dist/leader-thread/LeaderSyncProcessor.js +28 -28
  22. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  23. package/dist/leader-thread/eventlog.d.ts +13 -13
  24. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  25. package/dist/leader-thread/eventlog.js +12 -11
  26. package/dist/leader-thread/eventlog.js.map +1 -1
  27. package/dist/leader-thread/leader-worker-devtools.d.ts +2 -2
  28. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  29. package/dist/leader-thread/leader-worker-devtools.js +3 -3
  30. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  31. package/dist/leader-thread/make-leader-thread-layer.d.ts +2 -2
  32. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  33. package/dist/leader-thread/make-leader-thread-layer.js +10 -8
  34. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  35. package/dist/leader-thread/materialize-event.d.ts +1 -1
  36. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  37. package/dist/leader-thread/materialize-event.js +2 -2
  38. package/dist/leader-thread/materialize-event.js.map +1 -1
  39. package/dist/leader-thread/recreate-db.d.ts +2 -2
  40. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  41. package/dist/leader-thread/recreate-db.js +5 -5
  42. package/dist/leader-thread/recreate-db.js.map +1 -1
  43. package/dist/leader-thread/shutdown-channel.d.ts +2 -2
  44. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  45. package/dist/leader-thread/shutdown-channel.js +2 -2
  46. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  47. package/dist/leader-thread/types.d.ts +15 -15
  48. package/dist/leader-thread/types.d.ts.map +1 -1
  49. package/dist/make-client-session.d.ts +2 -2
  50. package/dist/make-client-session.d.ts.map +1 -1
  51. package/dist/materializer-helper.d.ts +5 -5
  52. package/dist/materializer-helper.d.ts.map +1 -1
  53. package/dist/materializer-helper.js.map +1 -1
  54. package/dist/rematerialize-from-eventlog.d.ts +2 -2
  55. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  56. package/dist/rematerialize-from-eventlog.js +6 -6
  57. package/dist/rematerialize-from-eventlog.js.map +1 -1
  58. package/dist/schema/EventDef/define.d.ts +147 -0
  59. package/dist/schema/EventDef/define.d.ts.map +1 -0
  60. package/dist/schema/EventDef/define.js +139 -0
  61. package/dist/schema/EventDef/define.js.map +1 -0
  62. package/dist/schema/EventDef/event-def.d.ts +106 -0
  63. package/dist/schema/EventDef/event-def.d.ts.map +1 -0
  64. package/dist/schema/EventDef/event-def.js +2 -0
  65. package/dist/schema/EventDef/event-def.js.map +1 -0
  66. package/dist/schema/EventDef/facts.d.ts +118 -0
  67. package/dist/schema/EventDef/facts.d.ts.map +1 -0
  68. package/dist/schema/EventDef/facts.js +53 -0
  69. package/dist/schema/EventDef/facts.js.map +1 -0
  70. package/dist/schema/EventDef/materializer.d.ts +155 -0
  71. package/dist/schema/EventDef/materializer.d.ts.map +1 -0
  72. package/dist/schema/EventDef/materializer.js +83 -0
  73. package/dist/schema/EventDef/materializer.js.map +1 -0
  74. package/dist/schema/EventDef/mod.d.ts +5 -0
  75. package/dist/schema/EventDef/mod.d.ts.map +1 -0
  76. package/dist/schema/EventDef/mod.js +5 -0
  77. package/dist/schema/EventDef/mod.js.map +1 -0
  78. package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
  79. package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
  80. package/dist/schema/{EventSequenceNumber.js → EventSequenceNumber/client.js} +86 -39
  81. package/dist/schema/EventSequenceNumber/client.js.map +1 -0
  82. package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
  83. package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
  84. package/dist/schema/EventSequenceNumber/global.js +14 -0
  85. package/dist/schema/EventSequenceNumber/global.js.map +1 -0
  86. package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
  87. package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
  88. package/dist/schema/EventSequenceNumber/mod.js +37 -0
  89. package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
  90. package/dist/schema/EventSequenceNumber.test.js +41 -41
  91. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  92. package/dist/schema/{LiveStoreEvent.d.ts → LiveStoreEvent/client.d.ts} +84 -101
  93. package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
  94. package/dist/schema/{LiveStoreEvent.js → LiveStoreEvent/client.js} +69 -52
  95. package/dist/schema/LiveStoreEvent/client.js.map +1 -0
  96. package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
  97. package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
  98. package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
  99. package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
  100. package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
  101. package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
  102. package/dist/schema/LiveStoreEvent/global.js +31 -0
  103. package/dist/schema/LiveStoreEvent/global.js.map +1 -0
  104. package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
  105. package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
  106. package/dist/schema/LiveStoreEvent/input.js +26 -0
  107. package/dist/schema/LiveStoreEvent/input.js.map +1 -0
  108. package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
  109. package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
  110. package/dist/schema/LiveStoreEvent/mod.js +5 -0
  111. package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
  112. package/dist/schema/events.d.ts +1 -1
  113. package/dist/schema/events.d.ts.map +1 -1
  114. package/dist/schema/events.js +1 -1
  115. package/dist/schema/events.js.map +1 -1
  116. package/dist/schema/mod.d.ts +3 -3
  117. package/dist/schema/mod.d.ts.map +1 -1
  118. package/dist/schema/mod.js +3 -3
  119. package/dist/schema/mod.js.map +1 -1
  120. package/dist/schema/schema.d.ts +1 -1
  121. package/dist/schema/schema.d.ts.map +1 -1
  122. package/dist/schema/state/sqlite/client-document-def.d.ts +1 -1
  123. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  124. package/dist/schema/state/sqlite/client-document-def.js +2 -2
  125. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  126. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  127. package/dist/schema/state/sqlite/column-def.js +60 -28
  128. package/dist/schema/state/sqlite/column-def.js.map +1 -1
  129. package/dist/schema/state/sqlite/column-def.test.js +12 -1
  130. package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
  131. package/dist/schema/state/sqlite/mod.d.ts +2 -2
  132. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  133. package/dist/schema/state/sqlite/mod.js +1 -1
  134. package/dist/schema/state/sqlite/mod.js.map +1 -1
  135. package/dist/schema/state/sqlite/query-builder/api.d.ts +12 -8
  136. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  137. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  138. package/dist/schema/state/sqlite/query-builder/astToSql.js +18 -11
  139. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  140. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  141. package/dist/schema/state/sqlite/query-builder/impl.js +0 -1
  142. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  143. package/dist/schema/state/sqlite/query-builder/impl.test.js +119 -90
  144. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  145. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +5 -5
  146. package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -1
  147. package/dist/schema/state/sqlite/system-tables/state-tables.js +3 -3
  148. package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -1
  149. package/dist/schema/unknown-events.d.ts +3 -3
  150. package/dist/schema/unknown-events.d.ts.map +1 -1
  151. package/dist/schema-management/migrations.d.ts +2 -2
  152. package/dist/schema-management/migrations.d.ts.map +1 -1
  153. package/dist/schema-management/migrations.js.map +1 -1
  154. package/dist/schema-management/validate-schema.d.ts +3 -3
  155. package/dist/schema-management/validate-schema.d.ts.map +1 -1
  156. package/dist/schema-management/validate-schema.js +2 -2
  157. package/dist/schema-management/validate-schema.js.map +1 -1
  158. package/dist/sqlite-types.d.ts +3 -3
  159. package/dist/sqlite-types.d.ts.map +1 -1
  160. package/dist/sync/ClientSessionSyncProcessor.d.ts +5 -5
  161. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  162. package/dist/sync/ClientSessionSyncProcessor.js +12 -12
  163. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  164. package/dist/sync/errors.d.ts +9 -4
  165. package/dist/sync/errors.d.ts.map +1 -1
  166. package/dist/sync/errors.js +6 -6
  167. package/dist/sync/errors.js.map +1 -1
  168. package/dist/sync/mock-sync-backend.d.ts +6 -6
  169. package/dist/sync/mock-sync-backend.d.ts.map +1 -1
  170. package/dist/sync/mock-sync-backend.js +4 -4
  171. package/dist/sync/mock-sync-backend.js.map +1 -1
  172. package/dist/sync/next/compact-events.js +2 -2
  173. package/dist/sync/next/compact-events.js.map +1 -1
  174. package/dist/sync/next/facts.d.ts +5 -5
  175. package/dist/sync/next/facts.d.ts.map +1 -1
  176. package/dist/sync/next/facts.js.map +1 -1
  177. package/dist/sync/next/history-dag-common.d.ts +5 -5
  178. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  179. package/dist/sync/next/history-dag-common.js +5 -5
  180. package/dist/sync/next/history-dag-common.js.map +1 -1
  181. package/dist/sync/next/history-dag.d.ts.map +1 -1
  182. package/dist/sync/next/history-dag.js +8 -8
  183. package/dist/sync/next/history-dag.js.map +1 -1
  184. package/dist/sync/next/rebase-events.d.ts +5 -5
  185. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  186. package/dist/sync/next/rebase-events.js +5 -5
  187. package/dist/sync/next/rebase-events.js.map +1 -1
  188. package/dist/sync/next/test/event-fixtures.d.ts +2 -2
  189. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  190. package/dist/sync/next/test/event-fixtures.js +9 -9
  191. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  192. package/dist/sync/sync-backend-kv.d.ts +3 -3
  193. package/dist/sync/sync-backend-kv.d.ts.map +1 -1
  194. package/dist/sync/sync-backend-kv.js +3 -3
  195. package/dist/sync/sync-backend-kv.js.map +1 -1
  196. package/dist/sync/sync-backend.d.ts +9 -9
  197. package/dist/sync/sync-backend.d.ts.map +1 -1
  198. package/dist/sync/syncstate.d.ts +55 -42
  199. package/dist/sync/syncstate.d.ts.map +1 -1
  200. package/dist/sync/syncstate.js +42 -42
  201. package/dist/sync/syncstate.js.map +1 -1
  202. package/dist/sync/syncstate.test.js +40 -40
  203. package/dist/sync/syncstate.test.js.map +1 -1
  204. package/dist/sync/validate-push-payload.d.ts +1 -1
  205. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  206. package/dist/sync/validate-push-payload.js +2 -2
  207. package/dist/sync/validate-push-payload.js.map +1 -1
  208. package/dist/testing/event-factory.d.ts +3 -3
  209. package/dist/testing/event-factory.d.ts.map +1 -1
  210. package/dist/testing/event-factory.js +5 -7
  211. package/dist/testing/event-factory.js.map +1 -1
  212. package/dist/version.d.ts +1 -1
  213. package/dist/version.js +1 -1
  214. package/package.json +4 -4
  215. package/src/ClientSessionLeaderThreadProxy.ts +10 -10
  216. package/src/adapter-types.ts +5 -5
  217. package/src/devtools/devtools-messages-client-session.ts +2 -2
  218. package/src/devtools/devtools-messages-leader.ts +8 -8
  219. package/src/errors.ts +11 -13
  220. package/src/leader-thread/LeaderSyncProcessor.ts +54 -56
  221. package/src/leader-thread/eventlog.ts +21 -26
  222. package/src/leader-thread/leader-worker-devtools.ts +3 -3
  223. package/src/leader-thread/make-leader-thread-layer.ts +12 -10
  224. package/src/leader-thread/materialize-event.ts +3 -3
  225. package/src/leader-thread/recreate-db.ts +6 -6
  226. package/src/leader-thread/shutdown-channel.ts +2 -2
  227. package/src/leader-thread/types.ts +15 -15
  228. package/src/make-client-session.ts +2 -2
  229. package/src/materializer-helper.ts +5 -5
  230. package/src/rematerialize-from-eventlog.ts +6 -6
  231. package/src/schema/EventDef/define.ts +201 -0
  232. package/src/schema/EventDef/event-def.ts +120 -0
  233. package/src/schema/EventDef/facts.ts +135 -0
  234. package/src/schema/EventDef/materializer.ts +172 -0
  235. package/src/schema/EventDef/mod.ts +4 -0
  236. package/src/schema/EventSequenceNumber/client.ts +257 -0
  237. package/src/schema/EventSequenceNumber/global.ts +19 -0
  238. package/src/schema/EventSequenceNumber/mod.ts +37 -0
  239. package/src/schema/EventSequenceNumber.test.ts +68 -50
  240. package/src/schema/LiveStoreEvent/client.ts +221 -0
  241. package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
  242. package/src/schema/LiveStoreEvent/global.ts +45 -0
  243. package/src/schema/LiveStoreEvent/input.ts +63 -0
  244. package/src/schema/LiveStoreEvent/mod.ts +4 -0
  245. package/src/schema/events.ts +1 -1
  246. package/src/schema/mod.ts +3 -3
  247. package/src/schema/schema.ts +1 -1
  248. package/src/schema/state/sqlite/client-document-def.test.ts +2 -2
  249. package/src/schema/state/sqlite/client-document-def.ts +3 -3
  250. package/src/schema/state/sqlite/column-def.test.ts +18 -1
  251. package/src/schema/state/sqlite/column-def.ts +73 -30
  252. package/src/schema/state/sqlite/mod.ts +2 -2
  253. package/src/schema/state/sqlite/query-builder/api.ts +12 -8
  254. package/src/schema/state/sqlite/query-builder/astToSql.ts +20 -11
  255. package/src/schema/state/sqlite/query-builder/impl.test.ts +122 -90
  256. package/src/schema/state/sqlite/query-builder/impl.ts +0 -1
  257. package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +5 -5
  258. package/src/schema/state/sqlite/system-tables/state-tables.ts +3 -3
  259. package/src/schema/unknown-events.ts +3 -3
  260. package/src/schema-management/migrations.ts +2 -2
  261. package/src/schema-management/validate-schema.ts +3 -3
  262. package/src/sqlite-types.ts +3 -3
  263. package/src/sync/ClientSessionSyncProcessor.ts +17 -17
  264. package/src/sync/errors.ts +6 -6
  265. package/src/sync/mock-sync-backend.ts +16 -16
  266. package/src/sync/next/compact-events.ts +2 -2
  267. package/src/sync/next/facts.ts +6 -6
  268. package/src/sync/next/history-dag-common.ts +8 -8
  269. package/src/sync/next/history-dag.ts +14 -10
  270. package/src/sync/next/rebase-events.ts +11 -11
  271. package/src/sync/next/test/event-fixtures.ts +11 -11
  272. package/src/sync/sync-backend-kv.ts +3 -3
  273. package/src/sync/sync-backend.ts +9 -9
  274. package/src/sync/syncstate.test.ts +46 -46
  275. package/src/sync/syncstate.ts +59 -55
  276. package/src/sync/validate-push-payload.ts +4 -4
  277. package/src/testing/event-factory.ts +10 -12
  278. package/src/version.ts +1 -1
  279. package/dist/schema/EventDef.d.ts +0 -126
  280. package/dist/schema/EventDef.d.ts.map +0 -1
  281. package/dist/schema/EventDef.js +0 -46
  282. package/dist/schema/EventDef.js.map +0 -1
  283. package/dist/schema/EventSequenceNumber.d.ts +0 -89
  284. package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
  285. package/dist/schema/EventSequenceNumber.js.map +0 -1
  286. package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
  287. package/dist/schema/LiveStoreEvent.js.map +0 -1
  288. package/src/schema/EventDef.ts +0 -222
  289. package/src/schema/EventSequenceNumber.ts +0 -208
  290. package/src/schema/LiveStoreEvent.ts +0 -286
@@ -33,9 +33,9 @@
33
33
 
34
34
  import { Schema } from '@livestore/utils/effect'
35
35
 
36
- import type { EventDef } from '../schema/EventDef.ts'
37
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
38
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
36
+ import type { EventDef } from '../schema/EventDef/mod.ts'
37
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts'
38
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
39
39
 
40
40
  export interface ClientIdentity {
41
41
  clientId: string
@@ -80,7 +80,7 @@ export const makeFactory =
80
80
  client,
81
81
  startSeq = 1,
82
82
  initialParent = 'root',
83
- }: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal> => {
83
+ }: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.Global.Encoded> => {
84
84
  let nextSeq = startSeq
85
85
  let parentRef: SequenceValue = initialParent
86
86
 
@@ -95,7 +95,7 @@ export const makeFactory =
95
95
 
96
96
  const current = () => ({ seq: nextSeq, parent: parentRef })
97
97
 
98
- const factories: Partial<EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>> = {}
98
+ const factories: Partial<EventFactories<TDefs, LiveStoreEvent.Global.Encoded>> = {}
99
99
 
100
100
  for (const [name, eventDef] of Object.entries(eventDefs) as [keyof TDefs, TDefs[keyof TDefs]][]) {
101
101
  const next = (args: EventFactoriesArgs<TDefs>[typeof name]) => {
@@ -103,14 +103,12 @@ export const makeFactory =
103
103
  const encodedArgs = Schema.encodeSync(eventDef.schema)(decoded.args)
104
104
  const encoded = eventDef.encoded(encodedArgs)
105
105
 
106
- const event = LiveStoreEvent.AnyEncodedGlobal.make({
106
+ const event = LiveStoreEvent.Global.Encoded.make({
107
107
  name: encoded.name,
108
108
  args: encoded.args,
109
- seqNum: EventSequenceNumber.globalEventSequenceNumber(nextSeq),
109
+ seqNum: EventSequenceNumber.Global.make(nextSeq),
110
110
  parentSeqNum:
111
- parentRef === 'root'
112
- ? EventSequenceNumber.ROOT.global
113
- : EventSequenceNumber.globalEventSequenceNumber(parentRef),
111
+ parentRef === 'root' ? EventSequenceNumber.Client.ROOT.global : EventSequenceNumber.Global.make(parentRef),
114
112
  clientId: client.clientId,
115
113
  sessionId: client.sessionId,
116
114
  })
@@ -126,8 +124,8 @@ export const makeFactory =
126
124
  advanceTo,
127
125
  setParent,
128
126
  current,
129
- } as EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>[typeof name]
127
+ } as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>[typeof name]
130
128
  }
131
129
 
132
- return factories as EventFactories<TDefs, LiveStoreEvent.AnyEncodedGlobal>
130
+ return factories as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>
133
131
  }
package/src/version.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // import packageJson from '../package.json' with { type: 'json' }
3
3
  // export const liveStoreVersion = packageJson.version
4
4
 
5
- export const liveStoreVersion = '0.4.0-dev.17' as const
5
+ export const liveStoreVersion = '0.4.0-dev.19' as const
6
6
 
7
7
  /**
8
8
  * CRITICAL: Increment this version whenever you modify client-side EVENTLOG table schemas.
@@ -1,126 +0,0 @@
1
- import type { SingleOrReadonlyArray } from '@livestore/utils';
2
- import { Schema } from '@livestore/utils/effect';
3
- import type { BindValues } from '../sql-queries/sql-queries.ts';
4
- import type { ParamsObject } from '../util.ts';
5
- import type * as LiveStoreEvent from './LiveStoreEvent.ts';
6
- import type { QueryBuilder } from './state/sqlite/query-builder/mod.ts';
7
- export type EventDefMap = {
8
- map: Map<string, EventDef.Any>;
9
- };
10
- export type EventDefRecord = {
11
- [name: string]: EventDef.Any;
12
- };
13
- export type EventDef<TName extends string, TType, TEncoded = TType, TDerived extends boolean = false> = {
14
- name: TName;
15
- schema: Schema.Schema<TType, TEncoded>;
16
- options: {
17
- /**
18
- * When set to true, the mutation won't be synced across clients but
19
- */
20
- clientOnly: boolean;
21
- /** Warning: This feature is not fully implemented yet */
22
- facts: FactsCallback<TType> | undefined;
23
- derived: TDerived;
24
- };
25
- /** Helper function to construct a partial event */
26
- (args: TType): {
27
- name: TName;
28
- args: TType;
29
- };
30
- /** Helper function to construct a partial encoded event */
31
- encoded: (args: TEncoded) => {
32
- name: TName;
33
- args: TEncoded;
34
- };
35
- readonly Event: {
36
- name: TName;
37
- args: TType;
38
- };
39
- };
40
- export type FactsCallback<TTo> = (args: TTo, currentFacts: EventDefFacts) => {
41
- modify: {
42
- set: Iterable<EventDefFactInput>;
43
- unset: Iterable<EventDefFactInput>;
44
- };
45
- require: Iterable<EventDefFactInput>;
46
- };
47
- export declare namespace EventDef {
48
- type Any = EventDef<string, any, any, boolean>;
49
- type AnyWithoutFn = Pick<Any, 'name' | 'schema' | 'options'>;
50
- }
51
- export type EventDefKey = string;
52
- export type EventDefFact = string;
53
- export type EventDefFacts = ReadonlyMap<string, any>;
54
- export type EventDefFactsGroup = {
55
- modifySet: EventDefFacts;
56
- modifyUnset: EventDefFacts;
57
- /**
58
- * Events on independent "dependency" branches are commutative which can facilitate more prioritized syncing
59
- */
60
- depRequire: EventDefFacts;
61
- depRead: EventDefFacts;
62
- };
63
- export type EventDefFactsSnapshot = Map<string, any>;
64
- export type EventDefFactInput = string | readonly [string, any];
65
- export declare const defineFacts: <TRecord extends Record<string, EventDefFactInput | ((...args: any[]) => EventDefFactInput)>>(record: TRecord) => TRecord;
66
- export type DefineEventOptions<TTo, TDerived extends boolean = false> = {
67
- /** Warning: This feature is not fully implemented yet */
68
- facts?: (args: TTo, currentFacts: EventDefFacts) => {
69
- modify?: {
70
- set?: Iterable<EventDefFactInput>;
71
- unset?: Iterable<EventDefFactInput>;
72
- };
73
- /**
74
- * Two purposes: constrain history and constrain compaction
75
- */
76
- require?: Iterable<EventDefFactInput>;
77
- };
78
- /**
79
- * When set to true, the event won't be synced over the network
80
- */
81
- clientOnly?: boolean;
82
- derived?: TDerived;
83
- };
84
- export declare const defineEvent: <TName extends string, TType, TEncoded = TType, TDerived extends boolean = false>(args: {
85
- name: TName;
86
- schema: Schema.Schema<TType, TEncoded>;
87
- } & DefineEventOptions<TType, TDerived>) => EventDef<TName, TType, TEncoded, TDerived>;
88
- export declare const synced: <TName extends string, TType, TEncoded = TType>(args: {
89
- name: TName;
90
- schema: Schema.Schema<TType, TEncoded>;
91
- } & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
92
- export declare const clientOnly: <TName extends string, TType, TEncoded = TType>(args: {
93
- name: TName;
94
- schema: Schema.Schema<TType, TEncoded>;
95
- } & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
96
- export type MaterializerResult = {
97
- sql: string;
98
- bindValues: BindValues;
99
- writeTables?: ReadonlySet<string>;
100
- } | QueryBuilder.Any | string;
101
- export type MaterializerContextQuery = {
102
- (args: {
103
- query: string;
104
- bindValues: ParamsObject;
105
- }): ReadonlyArray<unknown>;
106
- <TResult>(qb: QueryBuilder<TResult, any, any>): TResult;
107
- };
108
- export type Materializer<TEventDef extends EventDef.AnyWithoutFn = EventDef.AnyWithoutFn> = (event: TEventDef['schema']['Type'], context: {
109
- currentFacts: EventDefFacts;
110
- eventDef: TEventDef;
111
- /** Can be used to query the current state */
112
- query: MaterializerContextQuery;
113
- /** The full LiveStore event with clientId, sessionId, etc. */
114
- event: LiveStoreEvent.AnyDecoded;
115
- }) => SingleOrReadonlyArray<MaterializerResult>;
116
- export declare const defineMaterializer: <TEventDef extends EventDef.AnyWithoutFn>(_eventDef: TEventDef, materializer: Materializer<TEventDef>) => Materializer<TEventDef>;
117
- export declare const materializers: <TInputRecord extends Record<string, EventDef.AnyWithoutFn>>(_eventDefRecord: TInputRecord, handlers: { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
118
- name: TEventName;
119
- }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
120
- name: TEventName;
121
- }>>; }) => { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
122
- name: TEventName;
123
- }>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
124
- name: TEventName;
125
- }>>; };
126
- //# sourceMappingURL=EventDef.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventDef.d.ts","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { shouldNeverHappen } from '@livestore/utils';
2
- import { Schema } from '@livestore/utils/effect';
3
- export const defineFacts = (record) => record;
4
- export const defineEvent = (args) => {
5
- const { name, schema, ...options } = args;
6
- const makePartialEvent = (args) => {
7
- const res = Schema.validateEither(schema)(args);
8
- if (res._tag === 'Left') {
9
- shouldNeverHappen(`Invalid event args for event '${name}':`, res.left.message, '\n');
10
- }
11
- return { name: name, args };
12
- };
13
- Object.defineProperty(makePartialEvent, 'name', { value: name });
14
- Object.defineProperty(makePartialEvent, 'schema', { value: schema });
15
- Object.defineProperty(makePartialEvent, 'encoded', {
16
- value: (args) => ({ name: name, args }),
17
- });
18
- Object.defineProperty(makePartialEvent, 'options', {
19
- value: {
20
- clientOnly: options?.clientOnly ?? false,
21
- facts: options?.facts
22
- ? (args, currentFacts) => {
23
- const res = options.facts(args, currentFacts);
24
- return {
25
- modify: {
26
- set: res.modify?.set ? new Set(res.modify.set) : new Set(),
27
- unset: res.modify?.unset ? new Set(res.modify.unset) : new Set(),
28
- },
29
- require: res.require ? new Set(res.require) : new Set(),
30
- };
31
- }
32
- : undefined,
33
- derived: options?.derived ?? false,
34
- },
35
- });
36
- return makePartialEvent;
37
- };
38
- export const synced = (args) => defineEvent({ ...args, clientOnly: false });
39
- export const clientOnly = (args) => defineEvent({ ...args, clientOnly: true });
40
- export const defineMaterializer = (_eventDef, materializer) => {
41
- return materializer;
42
- };
43
- export const materializers = (_eventDefRecord, handlers) => {
44
- return handlers;
45
- };
46
- //# sourceMappingURL=EventDef.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventDef.js","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- import { Brand, Schema } from '@livestore/utils/effect';
2
- export type ClientEventSequenceNumber = Brand.Branded<number, 'ClientEventSequenceNumber'>;
3
- export declare const localEventSequenceNumber: Brand.Brand.Constructor<ClientEventSequenceNumber>;
4
- export declare const ClientEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
5
- export type GlobalEventSequenceNumber = Brand.Branded<number, 'GlobalEventSequenceNumber'>;
6
- export declare const globalEventSequenceNumber: Brand.Brand.Constructor<GlobalEventSequenceNumber>;
7
- export declare const GlobalEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
8
- export declare const clientDefault: ClientEventSequenceNumber;
9
- export declare const rebaseGenerationDefault = 0;
10
- /**
11
- * LiveStore event sequence number value consisting of a globally unique event sequence number
12
- * and a client sequence number.
13
- *
14
- * The client sequence number is only used for client-local events and starts from 0 for each global sequence number.
15
- *
16
- * For event notation documentation, see: contributor-docs/events-notation.md
17
- */
18
- export type EventSequenceNumber = {
19
- global: GlobalEventSequenceNumber;
20
- client: ClientEventSequenceNumber;
21
- /**
22
- * Generation integer that is incremented whenever the client rebased.
23
- * Remains constant for all subsequent events until another rebase occurs.
24
- */
25
- rebaseGeneration: number;
26
- };
27
- export type EventSequenceNumberInput = EventSequenceNumber | (Omit<typeof EventSequenceNumber.Encoded, 'rebaseGeneration'> & {
28
- rebaseGeneration?: number;
29
- });
30
- /**
31
- * NOTE: Client mutation events with a non-0 client id, won't be synced to the sync backend.
32
- */
33
- export declare const EventSequenceNumber: Schema.Struct<{
34
- global: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
35
- /** Only increments for client-local events */
36
- client: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
37
- rebaseGeneration: typeof Schema.Int;
38
- }>;
39
- /**
40
- * Compare two event sequence numbers i.e. checks if the first event sequence number is less than the second.
41
- * Comparison hierarchy: global > client > rebaseGeneration
42
- */
43
- export declare const compare: (a: EventSequenceNumber, b: EventSequenceNumber) => number;
44
- /**
45
- * Convert an event sequence number to a string representation.
46
- *
47
- * For notation documentation, see: contributor-docs/events-notation.md
48
- */
49
- export declare const toString: (seqNum: EventSequenceNumber) => string;
50
- /**
51
- * Convert a string representation of an event sequence number to an event sequence number.
52
- * Parses strings in the format: e{global}[.{client}][r{rebaseGeneration}]
53
- * Examples: "e0", "e0r1", "e0.1", "e0.1r1"
54
- *
55
- * For full notation documentation, see: contributor-docs/events-notation.md
56
- */
57
- export declare const fromString: (str: string) => EventSequenceNumber;
58
- export declare const fromGlobal: (seqNum: GlobalEventSequenceNumber) => {
59
- global: GlobalEventSequenceNumber;
60
- client: ClientEventSequenceNumber;
61
- rebaseGeneration: number;
62
- };
63
- export declare const isEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
64
- export type EventSequenceNumberPair = {
65
- seqNum: EventSequenceNumber;
66
- parentSeqNum: EventSequenceNumber;
67
- };
68
- export declare const ROOT: {
69
- global: GlobalEventSequenceNumber;
70
- client: ClientEventSequenceNumber;
71
- rebaseGeneration: number;
72
- };
73
- export declare const isGreaterThan: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
74
- export declare const isGreaterThanOrEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
75
- export declare const max: (a: EventSequenceNumber, b: EventSequenceNumber) => EventSequenceNumber;
76
- export declare const diff: (a: EventSequenceNumber, b: EventSequenceNumber) => {
77
- global: number;
78
- client: number;
79
- };
80
- export declare const make: (seqNum: EventSequenceNumberInput) => EventSequenceNumber;
81
- /**
82
- * Computes the next event sequence/parent pair.
83
- */
84
- export declare const nextPair: ({ seqNum, isClient, rebaseGeneration, }: {
85
- seqNum: EventSequenceNumber;
86
- isClient: boolean;
87
- rebaseGeneration?: number;
88
- }) => EventSequenceNumberPair;
89
- //# sourceMappingURL=EventSequenceNumber.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventSequenceNumber.d.ts","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvD,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,wBAAwB,oDAA6C,CAAA;AAClF,eAAO,MAAM,yBAAyB,sFAAyD,CAAA;AAE/F,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,yBAAyB,oDAA6C,CAAA;AACnF,eAAO,MAAM,yBAAyB,sFAA0D,CAAA;AAEhG,eAAO,MAAM,aAAa,EAAe,yBAAyB,CAAA;AAElE,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,yBAAyB,CAAA;IACjC,MAAM,EAAE,yBAAyB,CAAA;IACjC;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAGlG;;GAEG;AACH,eAAO,MAAM,mBAAmB;;IAE9B,8CAA8C;;;EAU9C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,WAQrE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,mBAAmB,WAKnD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,mBAyCxC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,yBAAyB;;;;CAI1D,CAAA;AAEF,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YACuB,CAAA;AAE7F,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAExG,eAAO,MAAM,IAAI;YACK,yBAAyB;;;CAGhB,CAAA;AAE/B,eAAO,MAAM,aAAa,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAE3E,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAElF,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,wBAEjE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB;;;CAKlE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,wBAAwB,KAAG,mBAOvD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,yCAItB;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,uBAqBH,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventSequenceNumber.js","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveStoreEvent.d.ts","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveStoreEvent.js","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}
@@ -1,222 +0,0 @@
1
- import type { SingleOrReadonlyArray } from '@livestore/utils'
2
- import { shouldNeverHappen } from '@livestore/utils'
3
- import { Schema } from '@livestore/utils/effect'
4
-
5
- import type { BindValues } from '../sql-queries/sql-queries.ts'
6
- import type { ParamsObject } from '../util.ts'
7
- import type * as LiveStoreEvent from './LiveStoreEvent.ts'
8
- import type { QueryBuilder } from './state/sqlite/query-builder/mod.ts'
9
-
10
- export type EventDefMap = {
11
- map: Map<string, EventDef.Any>
12
- }
13
- export type EventDefRecord = {
14
- [name: string]: EventDef.Any
15
- }
16
-
17
- export type EventDef<TName extends string, TType, TEncoded = TType, TDerived extends boolean = false> = {
18
- name: TName
19
- schema: Schema.Schema<TType, TEncoded>
20
- options: {
21
- /**
22
- * When set to true, the mutation won't be synced across clients but
23
- */
24
- clientOnly: boolean
25
- /** Warning: This feature is not fully implemented yet */
26
- facts: FactsCallback<TType> | undefined
27
- derived: TDerived
28
- }
29
-
30
- /** Helper function to construct a partial event */
31
- (
32
- args: TType,
33
- ): {
34
- name: TName
35
- args: TType
36
- }
37
-
38
- /** Helper function to construct a partial encoded event */
39
- encoded: (args: TEncoded) => {
40
- name: TName
41
- args: TEncoded
42
- }
43
-
44
- readonly Event: {
45
- name: TName
46
- args: TType
47
- }
48
- }
49
-
50
- export type FactsCallback<TTo> = (
51
- args: TTo,
52
- currentFacts: EventDefFacts,
53
- ) => {
54
- modify: {
55
- set: Iterable<EventDefFactInput>
56
- unset: Iterable<EventDefFactInput>
57
- }
58
- require: Iterable<EventDefFactInput>
59
- }
60
-
61
- export namespace EventDef {
62
- export type Any = EventDef<string, any, any, boolean>
63
-
64
- export type AnyWithoutFn = Pick<Any, 'name' | 'schema' | 'options'>
65
- }
66
-
67
- export type EventDefKey = string
68
- export type EventDefFact = string
69
- export type EventDefFacts = ReadonlyMap<string, any>
70
-
71
- export type EventDefFactsGroup = {
72
- modifySet: EventDefFacts
73
- modifyUnset: EventDefFacts
74
-
75
- /**
76
- * Events on independent "dependency" branches are commutative which can facilitate more prioritized syncing
77
- */
78
- depRequire: EventDefFacts
79
- depRead: EventDefFacts
80
- }
81
-
82
- export type EventDefFactsSnapshot = Map<string, any>
83
-
84
- export type EventDefFactInput = string | readonly [string, any]
85
-
86
- export const defineFacts = <
87
- TRecord extends Record<string, EventDefFactInput | ((...args: any[]) => EventDefFactInput)>,
88
- >(
89
- record: TRecord,
90
- ): TRecord => record
91
-
92
- export type DefineEventOptions<TTo, TDerived extends boolean = false> = {
93
- // TODO actually implement this
94
- // onError?: (error: any) => void
95
- /** Warning: This feature is not fully implemented yet */
96
- facts?: (
97
- args: TTo,
98
- currentFacts: EventDefFacts,
99
- ) => {
100
- modify?: {
101
- set?: Iterable<EventDefFactInput>
102
- unset?: Iterable<EventDefFactInput>
103
- }
104
- /**
105
- * Two purposes: constrain history and constrain compaction
106
- */
107
- require?: Iterable<EventDefFactInput>
108
- }
109
- /**
110
- * When set to true, the event won't be synced over the network
111
- */
112
- clientOnly?: boolean
113
- derived?: TDerived
114
- }
115
-
116
- export const defineEvent = <TName extends string, TType, TEncoded = TType, TDerived extends boolean = false>(
117
- args: {
118
- name: TName
119
- schema: Schema.Schema<TType, TEncoded>
120
- } & DefineEventOptions<TType, TDerived>,
121
- ): EventDef<TName, TType, TEncoded, TDerived> => {
122
- const { name, schema, ...options } = args
123
-
124
- const makePartialEvent = (args: TType) => {
125
- const res = Schema.validateEither(schema)(args)
126
- if (res._tag === 'Left') {
127
- shouldNeverHappen(`Invalid event args for event '${name}':`, res.left.message, '\n')
128
- }
129
- return { name: name, args }
130
- }
131
-
132
- Object.defineProperty(makePartialEvent, 'name', { value: name })
133
- Object.defineProperty(makePartialEvent, 'schema', { value: schema })
134
- Object.defineProperty(makePartialEvent, 'encoded', {
135
- value: (args: TEncoded) => ({ name: name, args }),
136
- })
137
-
138
- Object.defineProperty(makePartialEvent, 'options', {
139
- value: {
140
- clientOnly: options?.clientOnly ?? false,
141
- facts: options?.facts
142
- ? (args, currentFacts) => {
143
- const res = options.facts!(args, currentFacts)
144
- return {
145
- modify: {
146
- set: res.modify?.set ? new Set(res.modify.set) : new Set(),
147
- unset: res.modify?.unset ? new Set(res.modify.unset) : new Set(),
148
- },
149
- require: res.require ? new Set(res.require) : new Set(),
150
- }
151
- }
152
- : undefined,
153
- derived: options?.derived ?? false,
154
- } satisfies EventDef.Any['options'],
155
- })
156
-
157
- return makePartialEvent as EventDef<TName, TType, TEncoded, TDerived>
158
- }
159
-
160
- export const synced = <TName extends string, TType, TEncoded = TType>(
161
- args: {
162
- name: TName
163
- schema: Schema.Schema<TType, TEncoded>
164
- } & Omit<DefineEventOptions<TType, false>, 'derived' | 'clientOnly'>,
165
- ): EventDef<TName, TType, TEncoded> => defineEvent({ ...args, clientOnly: false })
166
-
167
- export const clientOnly = <TName extends string, TType, TEncoded = TType>(
168
- args: {
169
- name: TName
170
- schema: Schema.Schema<TType, TEncoded>
171
- } & Omit<DefineEventOptions<TType, false>, 'derived' | 'clientOnly'>,
172
- ): EventDef<TName, TType, TEncoded> => defineEvent({ ...args, clientOnly: true })
173
-
174
- export type MaterializerResult =
175
- | {
176
- sql: string
177
- bindValues: BindValues
178
- writeTables?: ReadonlySet<string>
179
- }
180
- | QueryBuilder.Any
181
- | string
182
-
183
- export type MaterializerContextQuery = {
184
- (args: { query: string; bindValues: ParamsObject }): ReadonlyArray<unknown>
185
- <TResult>(qb: QueryBuilder<TResult, any, any>): TResult
186
- }
187
-
188
- export type Materializer<TEventDef extends EventDef.AnyWithoutFn = EventDef.AnyWithoutFn> = (
189
- event: TEventDef['schema']['Type'],
190
- context: {
191
- currentFacts: EventDefFacts
192
- eventDef: TEventDef
193
- /** Can be used to query the current state */
194
- query: MaterializerContextQuery
195
- /** The full LiveStore event with clientId, sessionId, etc. */
196
- event: LiveStoreEvent.AnyDecoded
197
- },
198
- ) => SingleOrReadonlyArray<MaterializerResult>
199
-
200
- export const defineMaterializer = <TEventDef extends EventDef.AnyWithoutFn>(
201
- _eventDef: TEventDef,
202
- materializer: Materializer<TEventDef>,
203
- ): Materializer<TEventDef> => {
204
- return materializer
205
- }
206
-
207
- export const materializers = <TInputRecord extends Record<string, EventDef.AnyWithoutFn>>(
208
- _eventDefRecord: TInputRecord,
209
- handlers: {
210
- [TEventName in TInputRecord[keyof TInputRecord]['name'] as Extract<
211
- TInputRecord[keyof TInputRecord],
212
- { name: TEventName }
213
- >['options']['derived'] extends true
214
- ? never
215
- : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], { name: TEventName }>>
216
- // [K in TInputRecord[keyof TInputRecord]['name']]: Materializer<
217
- // Extract<TInputRecord[keyof TInputRecord], { name: K }>
218
- // >
219
- },
220
- ) => {
221
- return handlers
222
- }