@livestore/common 0.3.0-dev.28 → 0.3.0-dev.29

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 (277) 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 +22 -15
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +15 -2
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/bounded-collections.d.ts +1 -1
  11. package/dist/bounded-collections.d.ts.map +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 +21 -21
  16. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  17. package/dist/devtools/devtools-messages-leader.d.ts +45 -45
  18. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  19. package/dist/devtools/devtools-messages-leader.js +11 -11
  20. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  21. package/dist/index.d.ts +2 -5
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -5
  24. package/dist/index.js.map +1 -1
  25. package/dist/leader-thread/LeaderSyncProcessor.d.ts +10 -10
  26. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  27. package/dist/leader-thread/LeaderSyncProcessor.js +63 -65
  28. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  29. package/dist/leader-thread/{apply-mutation.d.ts → apply-event.d.ts} +7 -7
  30. package/dist/leader-thread/apply-event.d.ts.map +1 -0
  31. package/dist/leader-thread/apply-event.js +103 -0
  32. package/dist/leader-thread/apply-event.js.map +1 -0
  33. package/dist/leader-thread/eventlog.d.ts +27 -0
  34. package/dist/leader-thread/eventlog.d.ts.map +1 -0
  35. package/dist/leader-thread/eventlog.js +123 -0
  36. package/dist/leader-thread/eventlog.js.map +1 -0
  37. package/dist/leader-thread/leader-worker-devtools.js +18 -18
  38. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  39. package/dist/leader-thread/make-leader-thread-layer.d.ts +2 -2
  40. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  41. package/dist/leader-thread/make-leader-thread-layer.js +16 -16
  42. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  43. package/dist/leader-thread/mod.d.ts +1 -1
  44. package/dist/leader-thread/mod.d.ts.map +1 -1
  45. package/dist/leader-thread/mod.js +1 -1
  46. package/dist/leader-thread/mod.js.map +1 -1
  47. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  48. package/dist/leader-thread/recreate-db.js +6 -8
  49. package/dist/leader-thread/recreate-db.js.map +1 -1
  50. package/dist/leader-thread/types.d.ts +11 -11
  51. package/dist/leader-thread/types.d.ts.map +1 -1
  52. package/dist/materializer-helper.d.ts +23 -0
  53. package/dist/materializer-helper.d.ts.map +1 -0
  54. package/dist/materializer-helper.js +70 -0
  55. package/dist/materializer-helper.js.map +1 -0
  56. package/dist/query-builder/api.d.ts +58 -53
  57. package/dist/query-builder/api.d.ts.map +1 -1
  58. package/dist/query-builder/api.js +3 -5
  59. package/dist/query-builder/api.js.map +1 -1
  60. package/dist/query-builder/astToSql.d.ts.map +1 -1
  61. package/dist/query-builder/astToSql.js +59 -37
  62. package/dist/query-builder/astToSql.js.map +1 -1
  63. package/dist/query-builder/impl.d.ts +2 -3
  64. package/dist/query-builder/impl.d.ts.map +1 -1
  65. package/dist/query-builder/impl.js +48 -46
  66. package/dist/query-builder/impl.js.map +1 -1
  67. package/dist/query-builder/impl.test.d.ts +86 -1
  68. package/dist/query-builder/impl.test.d.ts.map +1 -1
  69. package/dist/query-builder/impl.test.js +244 -36
  70. package/dist/query-builder/impl.test.js.map +1 -1
  71. package/dist/rehydrate-from-eventlog.d.ts +14 -0
  72. package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
  73. package/dist/{rehydrate-from-mutationlog.js → rehydrate-from-eventlog.js} +25 -26
  74. package/dist/rehydrate-from-eventlog.js.map +1 -0
  75. package/dist/schema/EventDef.d.ts +136 -0
  76. package/dist/schema/EventDef.d.ts.map +1 -0
  77. package/dist/schema/EventDef.js +58 -0
  78. package/dist/schema/EventDef.js.map +1 -0
  79. package/dist/schema/EventId.d.ts +2 -2
  80. package/dist/schema/EventId.d.ts.map +1 -1
  81. package/dist/schema/EventId.js +3 -2
  82. package/dist/schema/EventId.js.map +1 -1
  83. package/dist/schema/{MutationEvent.d.ts → LiveStoreEvent.d.ts} +56 -56
  84. package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
  85. package/dist/schema/{MutationEvent.js → LiveStoreEvent.js} +24 -24
  86. package/dist/schema/LiveStoreEvent.js.map +1 -0
  87. package/dist/schema/client-document-def.d.ts +223 -0
  88. package/dist/schema/client-document-def.d.ts.map +1 -0
  89. package/dist/schema/client-document-def.js +170 -0
  90. package/dist/schema/client-document-def.js.map +1 -0
  91. package/dist/schema/client-document-def.test.d.ts +2 -0
  92. package/dist/schema/client-document-def.test.d.ts.map +1 -0
  93. package/dist/schema/client-document-def.test.js +201 -0
  94. package/dist/schema/client-document-def.test.js.map +1 -0
  95. package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -1
  96. package/dist/schema/events.d.ts +2 -0
  97. package/dist/schema/events.d.ts.map +1 -0
  98. package/dist/schema/events.js +2 -0
  99. package/dist/schema/events.js.map +1 -0
  100. package/dist/schema/mod.d.ts +4 -3
  101. package/dist/schema/mod.d.ts.map +1 -1
  102. package/dist/schema/mod.js +4 -3
  103. package/dist/schema/mod.js.map +1 -1
  104. package/dist/schema/schema.d.ts +27 -23
  105. package/dist/schema/schema.d.ts.map +1 -1
  106. package/dist/schema/schema.js +45 -43
  107. package/dist/schema/schema.js.map +1 -1
  108. package/dist/schema/sqlite-state.d.ts +12 -0
  109. package/dist/schema/sqlite-state.d.ts.map +1 -0
  110. package/dist/schema/sqlite-state.js +36 -0
  111. package/dist/schema/sqlite-state.js.map +1 -0
  112. package/dist/schema/system-tables.d.ts +67 -98
  113. package/dist/schema/system-tables.d.ts.map +1 -1
  114. package/dist/schema/system-tables.js +62 -48
  115. package/dist/schema/system-tables.js.map +1 -1
  116. package/dist/schema/table-def.d.ts +26 -96
  117. package/dist/schema/table-def.d.ts.map +1 -1
  118. package/dist/schema/table-def.js +16 -64
  119. package/dist/schema/table-def.js.map +1 -1
  120. package/dist/schema/view.d.ts +3 -0
  121. package/dist/schema/view.d.ts.map +1 -0
  122. package/dist/schema/view.js +3 -0
  123. package/dist/schema/view.js.map +1 -0
  124. package/dist/schema-management/common.d.ts +4 -4
  125. package/dist/schema-management/common.d.ts.map +1 -1
  126. package/dist/schema-management/migrations.d.ts.map +1 -1
  127. package/dist/schema-management/migrations.js +6 -6
  128. package/dist/schema-management/migrations.js.map +1 -1
  129. package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
  130. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  131. package/dist/schema-management/validate-mutation-defs.js +17 -17
  132. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  133. package/dist/sync/ClientSessionSyncProcessor.d.ts +7 -7
  134. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  135. package/dist/sync/ClientSessionSyncProcessor.js +31 -30
  136. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  137. package/dist/sync/next/facts.d.ts +19 -19
  138. package/dist/sync/next/facts.d.ts.map +1 -1
  139. package/dist/sync/next/facts.js +2 -2
  140. package/dist/sync/next/facts.js.map +1 -1
  141. package/dist/sync/next/history-dag-common.d.ts +3 -3
  142. package/dist/sync/next/history-dag-common.d.ts.map +1 -1
  143. package/dist/sync/next/history-dag-common.js +1 -1
  144. package/dist/sync/next/history-dag-common.js.map +1 -1
  145. package/dist/sync/next/history-dag.js +1 -1
  146. package/dist/sync/next/history-dag.js.map +1 -1
  147. package/dist/sync/next/rebase-events.d.ts +7 -7
  148. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  149. package/dist/sync/next/rebase-events.js +5 -5
  150. package/dist/sync/next/rebase-events.js.map +1 -1
  151. package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
  152. package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
  153. package/dist/sync/next/test/compact-events.test.js +71 -71
  154. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  155. package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +29 -29
  156. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
  157. package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +60 -25
  158. package/dist/sync/next/test/event-fixtures.js.map +1 -0
  159. package/dist/sync/next/test/mod.d.ts +1 -1
  160. package/dist/sync/next/test/mod.d.ts.map +1 -1
  161. package/dist/sync/next/test/mod.js +1 -1
  162. package/dist/sync/next/test/mod.js.map +1 -1
  163. package/dist/sync/sync.d.ts +3 -3
  164. package/dist/sync/sync.d.ts.map +1 -1
  165. package/dist/sync/syncstate.d.ts +32 -32
  166. package/dist/sync/syncstate.d.ts.map +1 -1
  167. package/dist/sync/syncstate.js +10 -10
  168. package/dist/sync/syncstate.js.map +1 -1
  169. package/dist/sync/syncstate.test.js +5 -5
  170. package/dist/sync/syncstate.test.js.map +1 -1
  171. package/dist/sync/validate-push-payload.d.ts +2 -2
  172. package/dist/sync/validate-push-payload.d.ts.map +1 -1
  173. package/dist/sync/validate-push-payload.js.map +1 -1
  174. package/dist/version.d.ts +1 -1
  175. package/dist/version.js +1 -1
  176. package/package.json +3 -3
  177. package/src/__tests__/fixture.ts +36 -15
  178. package/src/adapter-types.ts +23 -16
  179. package/src/debug-info.ts +1 -0
  180. package/src/devtools/devtools-messages-leader.ts +13 -13
  181. package/src/index.ts +2 -5
  182. package/src/leader-thread/LeaderSyncProcessor.ts +81 -91
  183. package/src/leader-thread/{apply-mutation.ts → apply-event.ts} +50 -74
  184. package/src/leader-thread/eventlog.ts +199 -0
  185. package/src/leader-thread/leader-worker-devtools.ts +18 -18
  186. package/src/leader-thread/make-leader-thread-layer.ts +18 -18
  187. package/src/leader-thread/mod.ts +1 -1
  188. package/src/leader-thread/recreate-db.ts +6 -9
  189. package/src/leader-thread/types.ts +12 -12
  190. package/src/materializer-helper.ts +110 -0
  191. package/src/query-builder/api.ts +79 -105
  192. package/src/query-builder/astToSql.ts +68 -39
  193. package/src/query-builder/impl.test.ts +264 -42
  194. package/src/query-builder/impl.ts +72 -56
  195. package/src/{rehydrate-from-mutationlog.ts → rehydrate-from-eventlog.ts} +33 -40
  196. package/src/schema/EventDef.ts +216 -0
  197. package/src/schema/EventId.ts +5 -3
  198. package/src/schema/{MutationEvent.ts → LiveStoreEvent.ts} +67 -68
  199. package/src/schema/client-document-def.test.ts +239 -0
  200. package/src/schema/client-document-def.ts +444 -0
  201. package/src/schema/db-schema/dsl/mod.ts +0 -1
  202. package/src/schema/events.ts +1 -0
  203. package/src/schema/mod.ts +4 -3
  204. package/src/schema/schema.ts +79 -69
  205. package/src/schema/sqlite-state.ts +62 -0
  206. package/src/schema/system-tables.ts +42 -53
  207. package/src/schema/table-def.ts +53 -209
  208. package/src/schema/view.ts +2 -0
  209. package/src/schema-management/common.ts +4 -4
  210. package/src/schema-management/migrations.ts +8 -9
  211. package/src/schema-management/validate-mutation-defs.ts +22 -24
  212. package/src/sync/ClientSessionSyncProcessor.ts +37 -36
  213. package/src/sync/next/facts.ts +31 -32
  214. package/src/sync/next/history-dag-common.ts +4 -4
  215. package/src/sync/next/history-dag.ts +1 -1
  216. package/src/sync/next/rebase-events.ts +13 -13
  217. package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
  218. package/src/sync/next/test/compact-events.test.ts +73 -73
  219. package/src/sync/next/test/event-fixtures.ts +219 -0
  220. package/src/sync/next/test/mod.ts +1 -1
  221. package/src/sync/sync.ts +3 -3
  222. package/src/sync/syncstate.test.ts +8 -8
  223. package/src/sync/syncstate.ts +19 -19
  224. package/src/sync/validate-push-payload.ts +2 -2
  225. package/src/version.ts +1 -1
  226. package/tmp/pack.tgz +0 -0
  227. package/tsconfig.json +1 -0
  228. package/dist/derived-mutations.d.ts +0 -109
  229. package/dist/derived-mutations.d.ts.map +0 -1
  230. package/dist/derived-mutations.js +0 -54
  231. package/dist/derived-mutations.js.map +0 -1
  232. package/dist/derived-mutations.test.d.ts +0 -2
  233. package/dist/derived-mutations.test.d.ts.map +0 -1
  234. package/dist/derived-mutations.test.js +0 -93
  235. package/dist/derived-mutations.test.js.map +0 -1
  236. package/dist/init-singleton-tables.d.ts +0 -4
  237. package/dist/init-singleton-tables.d.ts.map +0 -1
  238. package/dist/init-singleton-tables.js +0 -16
  239. package/dist/init-singleton-tables.js.map +0 -1
  240. package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
  241. package/dist/leader-thread/apply-mutation.js +0 -122
  242. package/dist/leader-thread/apply-mutation.js.map +0 -1
  243. package/dist/leader-thread/mutationlog.d.ts +0 -27
  244. package/dist/leader-thread/mutationlog.d.ts.map +0 -1
  245. package/dist/leader-thread/mutationlog.js +0 -124
  246. package/dist/leader-thread/mutationlog.js.map +0 -1
  247. package/dist/leader-thread/pull-queue-set.d.ts +0 -7
  248. package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
  249. package/dist/leader-thread/pull-queue-set.js +0 -38
  250. package/dist/leader-thread/pull-queue-set.js.map +0 -1
  251. package/dist/mutation.d.ts +0 -20
  252. package/dist/mutation.d.ts.map +0 -1
  253. package/dist/mutation.js +0 -68
  254. package/dist/mutation.js.map +0 -1
  255. package/dist/query-info.d.ts +0 -41
  256. package/dist/query-info.d.ts.map +0 -1
  257. package/dist/query-info.js +0 -7
  258. package/dist/query-info.js.map +0 -1
  259. package/dist/rehydrate-from-mutationlog.d.ts +0 -15
  260. package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
  261. package/dist/rehydrate-from-mutationlog.js.map +0 -1
  262. package/dist/schema/MutationEvent.d.ts.map +0 -1
  263. package/dist/schema/MutationEvent.js.map +0 -1
  264. package/dist/schema/mutations.d.ts +0 -115
  265. package/dist/schema/mutations.d.ts.map +0 -1
  266. package/dist/schema/mutations.js +0 -42
  267. package/dist/schema/mutations.js.map +0 -1
  268. package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
  269. package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
  270. package/src/derived-mutations.test.ts +0 -101
  271. package/src/derived-mutations.ts +0 -170
  272. package/src/init-singleton-tables.ts +0 -24
  273. package/src/leader-thread/mutationlog.ts +0 -202
  274. package/src/mutation.ts +0 -108
  275. package/src/query-info.ts +0 -83
  276. package/src/schema/mutations.ts +0 -193
  277. package/src/sync/next/test/mutation-fixtures.ts +0 -228
@@ -3,7 +3,7 @@ import { Match, ReadonlyArray, Schema } from '@livestore/utils/effect'
3
3
 
4
4
  import { UnexpectedError } from '../adapter-types.js'
5
5
  import * as EventId from '../schema/EventId.js'
6
- import * as MutationEvent from '../schema/MutationEvent.js'
6
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
7
7
 
8
8
  /**
9
9
  * SyncState represents the current sync state of a sync node relative to an upstream node.
@@ -43,7 +43,7 @@ import * as MutationEvent from '../schema/MutationEvent.js'
43
43
  * handling cases such as upstream rebase, advance and local push.
44
44
  */
45
45
  export class SyncState extends Schema.Class<SyncState>('SyncState')({
46
- pending: Schema.Array(MutationEvent.EncodedWithMeta),
46
+ pending: Schema.Array(LiveStoreEvent.EncodedWithMeta),
47
47
  /** What this node expects the next upstream node to have as its own local head */
48
48
  upstreamHead: EventId.EventId,
49
49
  /** Equivalent to `pending.at(-1)?.id` if there are pending events */
@@ -61,17 +61,17 @@ export class SyncState extends Schema.Class<SyncState>('SyncState')({
61
61
  */
62
62
  export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
63
63
  /** Events which need to be rolled back */
64
- rollbackEvents: Schema.Array(MutationEvent.EncodedWithMeta),
64
+ rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
65
65
  /** Events which need to be applied after the rollback (already rebased by the upstream node) */
66
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
66
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
67
67
  }) {}
68
68
 
69
69
  export class PayloadUpstreamAdvance extends Schema.TaggedStruct('upstream-advance', {
70
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
70
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
71
71
  }) {}
72
72
 
73
73
  export class PayloadLocalPush extends Schema.TaggedStruct('local-push', {
74
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
74
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
75
75
  }) {}
76
76
 
77
77
  export class Payload extends Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance, PayloadLocalPush) {}
@@ -110,9 +110,9 @@ export class MergeContext extends Schema.Class<MergeContext>('MergeContext')({
110
110
  export class MergeResultAdvance extends Schema.Class<MergeResultAdvance>('MergeResultAdvance')({
111
111
  _tag: Schema.Literal('advance'),
112
112
  newSyncState: SyncState,
113
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
113
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
114
114
  /** Events which were previously pending but are now confirmed */
115
- confirmedEvents: Schema.Array(MutationEvent.EncodedWithMeta),
115
+ confirmedEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
116
116
  mergeContext: MergeContext,
117
117
  }) {
118
118
  toJSON = (): any => {
@@ -129,9 +129,9 @@ export class MergeResultAdvance extends Schema.Class<MergeResultAdvance>('MergeR
129
129
  export class MergeResultRebase extends Schema.Class<MergeResultRebase>('MergeResultRebase')({
130
130
  _tag: Schema.Literal('rebase'),
131
131
  newSyncState: SyncState,
132
- newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
132
+ newEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
133
133
  /** Events which need to be rolled back */
134
- rollbackEvents: Schema.Array(MutationEvent.EncodedWithMeta),
134
+ rollbackEvents: Schema.Array(LiveStoreEvent.EncodedWithMeta),
135
135
  mergeContext: MergeContext,
136
136
  }) {
137
137
  toJSON = (): any => {
@@ -199,8 +199,8 @@ export const merge = ({
199
199
  }: {
200
200
  syncState: SyncState
201
201
  payload: typeof Payload.Type
202
- isClientEvent: (event: MutationEvent.EncodedWithMeta) => boolean
203
- isEqualEvent: (a: MutationEvent.EncodedWithMeta, b: MutationEvent.EncodedWithMeta) => boolean
202
+ isClientEvent: (event: LiveStoreEvent.EncodedWithMeta) => boolean
203
+ isEqualEvent: (a: LiveStoreEvent.EncodedWithMeta, b: LiveStoreEvent.EncodedWithMeta) => boolean
204
204
  /** This is used in the leader which should ignore client events when receiving an upstream-advance payload */
205
205
  ignoreClientEvents?: boolean
206
206
  }): typeof MergeResult.Type => {
@@ -418,10 +418,10 @@ export const findDivergencePoint = ({
418
418
  isClientEvent,
419
419
  ignoreClientEvents,
420
420
  }: {
421
- existingEvents: ReadonlyArray<MutationEvent.EncodedWithMeta>
422
- incomingEvents: ReadonlyArray<MutationEvent.EncodedWithMeta>
423
- isEqualEvent: (a: MutationEvent.EncodedWithMeta, b: MutationEvent.EncodedWithMeta) => boolean
424
- isClientEvent: (event: MutationEvent.EncodedWithMeta) => boolean
421
+ existingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>
422
+ incomingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>
423
+ isEqualEvent: (a: LiveStoreEvent.EncodedWithMeta, b: LiveStoreEvent.EncodedWithMeta) => boolean
424
+ isClientEvent: (event: LiveStoreEvent.EncodedWithMeta) => boolean
425
425
  ignoreClientEvents: boolean
426
426
  }): number => {
427
427
  if (ignoreClientEvents) {
@@ -453,10 +453,10 @@ const rebaseEvents = ({
453
453
  baseEventId,
454
454
  isClientEvent,
455
455
  }: {
456
- events: ReadonlyArray<MutationEvent.EncodedWithMeta>
456
+ events: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>
457
457
  baseEventId: EventId.EventId
458
- isClientEvent: (event: MutationEvent.EncodedWithMeta) => boolean
459
- }): ReadonlyArray<MutationEvent.EncodedWithMeta> => {
458
+ isClientEvent: (event: LiveStoreEvent.EncodedWithMeta) => boolean
459
+ }): ReadonlyArray<LiveStoreEvent.EncodedWithMeta> => {
460
460
  let prevEventId = baseEventId
461
461
  return events.map((event) => {
462
462
  const isLocal = isClientEvent(event)
@@ -1,11 +1,11 @@
1
1
  import { Effect } from '@livestore/utils/effect'
2
2
 
3
- import type { EventId, MutationEvent } from '../schema/mod.js'
3
+ import type { EventId, LiveStoreEvent } from '../schema/mod.js'
4
4
  import { InvalidPushError } from './sync.js'
5
5
 
6
6
  // TODO proper batch validation
7
7
  export const validatePushPayload = (
8
- batch: ReadonlyArray<MutationEvent.AnyEncodedGlobal>,
8
+ batch: ReadonlyArray<LiveStoreEvent.AnyEncodedGlobal>,
9
9
  currentEventId: EventId.GlobalEventId,
10
10
  ) =>
11
11
  Effect.gen(function* () {
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.3.0-dev.28' as const
5
+ export const liveStoreVersion = '0.3.0-dev.29' as const
6
6
 
7
7
  /**
8
8
  * This version number is incremented whenever the internal storage format changes in a breaking way.
package/tmp/pack.tgz CHANGED
Binary file
package/tsconfig.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "extends": "../../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
+ "lib": ["ES2023"], // Needed for `Array.toSorted`
4
5
  "outDir": "./dist",
5
6
  "rootDir": "./src",
6
7
  "resolveJsonModule": true,
@@ -1,109 +0,0 @@
1
- import type { GetValForKey } from '@livestore/utils';
2
- import type { SqliteDsl } from './schema/db-schema/mod.js';
3
- import type * as MutationEvent from './schema/MutationEvent.js';
4
- import type * as DbSchema from './schema/table-def.js';
5
- export declare const makeDerivedMutationDefsForTable: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
6
- deriveMutations: {
7
- enabled: true;
8
- };
9
- }>>(table: TTableDef) => {
10
- insert: import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
11
- readonly [x: string]: any;
12
- } & {
13
- readonly [x: string]: any;
14
- }, {
15
- readonly [x: string]: any;
16
- } & {
17
- readonly [x: string]: any;
18
- }>;
19
- update: import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
20
- readonly where: {
21
- [x: string]: any;
22
- };
23
- readonly values: {
24
- [x: string]: any;
25
- };
26
- }, {
27
- readonly where: {
28
- [x: string]: any;
29
- };
30
- readonly values: {
31
- [x: string]: any;
32
- };
33
- }>;
34
- delete: import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
35
- readonly where: {
36
- [x: string]: any;
37
- };
38
- }, {
39
- readonly where: {
40
- [x: string]: any;
41
- };
42
- }>;
43
- };
44
- export declare const deriveCreateMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
45
- deriveMutations: {
46
- enabled: true;
47
- };
48
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Create_${string}`, {
49
- readonly [x: string]: any;
50
- } & {
51
- readonly [x: string]: any;
52
- }, {
53
- readonly [x: string]: any;
54
- } & {
55
- readonly [x: string]: any;
56
- }>;
57
- export declare const deriveUpdateMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
58
- deriveMutations: {
59
- enabled: true;
60
- };
61
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Update_${string}`, {
62
- readonly where: {
63
- [x: string]: any;
64
- };
65
- readonly values: {
66
- [x: string]: any;
67
- };
68
- }, {
69
- readonly where: {
70
- [x: string]: any;
71
- };
72
- readonly values: {
73
- [x: string]: any;
74
- };
75
- }>;
76
- export declare const deriveDeleteMutationDef: <TTableDef extends DbSchema.TableDefBase<DbSchema.DefaultSqliteTableDefConstrained, DbSchema.TableOptions & {
77
- deriveMutations: {
78
- enabled: true;
79
- };
80
- }>>(table: TTableDef) => import("./schema/mutations.js").MutationDef<`_Derived_Delete_${string}`, {
81
- readonly where: {
82
- [x: string]: any;
83
- };
84
- }, {
85
- readonly where: {
86
- [x: string]: any;
87
- };
88
- }>;
89
- /**
90
- * Convenience helper functions on top of the derived mutation definitions.
91
- */
92
- export type DerivedMutationHelperFns<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = {
93
- insert: DerivedMutationHelperFns.InsertMutationFn<TColumns, TOptions>;
94
- update: DerivedMutationHelperFns.UpdateMutationFn<TColumns, TOptions>;
95
- delete: DerivedMutationHelperFns.DeleteMutationFn<TColumns, TOptions>;
96
- };
97
- export declare namespace DerivedMutationHelperFns {
98
- export type InsertMutationFn<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = SqliteDsl.AnyIfConstained<TColumns, UseShortcut<TOptions> extends true ? (values?: GetValForKey<SqliteDsl.FromColumns.InsertRowDecoded<TColumns>, 'value'>) => MutationEvent.PartialAnyDecoded : (values: SqliteDsl.FromColumns.InsertRowDecoded<TColumns>) => MutationEvent.PartialAnyDecoded>;
99
- export type UpdateMutationFn<TColumns extends SqliteDsl.ConstraintColumns, TOptions extends DbSchema.TableOptions> = SqliteDsl.AnyIfConstained<TColumns, UseShortcut<TOptions> extends true ? (values: Partial<GetValForKey<SqliteDsl.FromColumns.RowDecoded<TColumns>, 'value'>>) => MutationEvent.PartialAnyDecoded : (args: {
100
- where: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
101
- values: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
102
- }) => MutationEvent.PartialAnyDecoded>;
103
- export type DeleteMutationFn<TColumns extends SqliteDsl.ConstraintColumns, _TOptions extends DbSchema.TableOptions> = (args: {
104
- where: Partial<SqliteDsl.FromColumns.RowDecoded<TColumns>>;
105
- }) => MutationEvent.PartialAnyDecoded;
106
- type UseShortcut<TOptions extends DbSchema.TableOptions> = TOptions['isSingleColumn'] extends true ? TOptions['isSingleton'] extends true ? true : false : false;
107
- export {};
108
- }
109
- //# sourceMappingURL=derived-mutations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.d.ts","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { ReadonlyRecord, Schema } from '@livestore/utils/effect';
2
- import { defineMutation } from './schema/mutations.js';
3
- import { getDefaultValuesDecoded } from './schema/schema-helpers.js';
4
- import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js';
5
- export const makeDerivedMutationDefsForTable = (table) => ({
6
- insert: deriveCreateMutationDef(table),
7
- update: deriveUpdateMutationDef(table),
8
- delete: deriveDeleteMutationDef(table),
9
- });
10
- export const deriveCreateMutationDef = (table) => {
11
- const tableName = table.sqliteDef.name;
12
- const [optionalFields, requiredColumns] = ReadonlyRecord.partition(table.sqliteDef.columns, (col) => col.nullable === false && col.default._tag === 'None');
13
- const insertSchema = Schema.Struct(ReadonlyRecord.map(requiredColumns, (col) => col.schema))
14
- .pipe(Schema.extend(Schema.partial(Schema.Struct(ReadonlyRecord.map(optionalFields, (col) => col.schema)))))
15
- .annotations({ title: `${tableName}:Insert` });
16
- return defineMutation(`_Derived_Create_${tableName}`, insertSchema, ({ id, ...explicitDefaultValues }) => {
17
- const defaultValues = getDefaultValuesDecoded(table, explicitDefaultValues);
18
- const [sql, bindValues] = insertRow({
19
- tableName: table.sqliteDef.name,
20
- columns: table.sqliteDef.columns,
21
- values: { ...defaultValues, id },
22
- });
23
- return { sql, bindValues, writeTables: new Set([tableName]) };
24
- }, { clientOnly: table.options.deriveMutations.clientOnly });
25
- };
26
- export const deriveUpdateMutationDef = (table) => {
27
- const tableName = table.sqliteDef.name;
28
- return defineMutation(`_Derived_Update_${tableName}`, Schema.Struct({
29
- where: Schema.partial(table.schema),
30
- values: Schema.partial(table.schema),
31
- }).annotations({ title: `${tableName}:Update` }), ({ where, values }) => {
32
- const [sql, bindValues] = updateRows({
33
- tableName: table.sqliteDef.name,
34
- columns: table.sqliteDef.columns,
35
- where,
36
- updateValues: values,
37
- });
38
- return { sql, bindValues, writeTables: new Set([tableName]) };
39
- }, { clientOnly: table.options.deriveMutations.clientOnly });
40
- };
41
- export const deriveDeleteMutationDef = (table) => {
42
- const tableName = table.sqliteDef.name;
43
- return defineMutation(`_Derived_Delete_${tableName}`, Schema.Struct({
44
- where: Schema.partial(table.schema),
45
- }), ({ where }) => {
46
- const [sql, bindValues] = deleteRows({
47
- tableName: table.sqliteDef.name,
48
- columns: table.sqliteDef.columns,
49
- where,
50
- });
51
- return { sql, bindValues, writeTables: new Set([tableName]) };
52
- }, { clientOnly: table.options.deriveMutations.clientOnly });
53
- };
54
- //# sourceMappingURL=derived-mutations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.js","sourceRoot":"","sources":["../src/derived-mutations.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=derived-mutations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.test.d.ts","sourceRoot":"","sources":["../src/derived-mutations.test.ts"],"names":[],"mappings":""}
@@ -1,93 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import { appConfig, todos } from './__tests__/fixture.js';
3
- describe('derived mutations', () => {
4
- test('todos', () => {
5
- expect(patchId(todos.insert({ id: 't1', completed: true, text: 'Task 1' }))).toMatchInlineSnapshot(`
6
- {
7
- "args": {
8
- "completed": true,
9
- "id": "t1",
10
- "text": "Task 1",
11
- },
12
- "id": "00000000-0000-0000-0000-000000000000",
13
- "mutation": "_Derived_Create_todos",
14
- }
15
- `);
16
- expect(patchId(todos.update({ where: { id: 't1' }, values: { text: 'Task 1 - fixed' } }))).toMatchInlineSnapshot(`
17
- {
18
- "args": {
19
- "values": {
20
- "text": "Task 1 - fixed",
21
- },
22
- "where": {
23
- "id": "t1",
24
- },
25
- },
26
- "id": "00000000-0000-0000-0000-000000000000",
27
- "mutation": "_Derived_Update_todos",
28
- }
29
- `);
30
- expect(patchId(todos.delete({ where: { id: 't1' } }))).toMatchInlineSnapshot(`
31
- {
32
- "args": {
33
- "where": {
34
- "id": "t1",
35
- },
36
- },
37
- "id": "00000000-0000-0000-0000-000000000000",
38
- "mutation": "_Derived_Delete_todos",
39
- }
40
- `);
41
- });
42
- test('app_config', () => {
43
- expect(patchId(appConfig.insert())).toMatchInlineSnapshot(`
44
- {
45
- "args": {
46
- "id": "singleton",
47
- "value": {
48
- "value": undefined,
49
- },
50
- },
51
- "id": "00000000-0000-0000-0000-000000000000",
52
- "mutation": "_Derived_Create_app_config",
53
- }
54
- `);
55
- expect(patchId(appConfig.insert({ fontSize: 12, theme: 'dark' }))).toMatchInlineSnapshot(`
56
- {
57
- "args": {
58
- "id": "singleton",
59
- "value": {
60
- "value": {
61
- "fontSize": 12,
62
- "theme": "dark",
63
- },
64
- },
65
- },
66
- "id": "00000000-0000-0000-0000-000000000000",
67
- "mutation": "_Derived_Create_app_config",
68
- }
69
- `);
70
- expect(patchId(appConfig.update({ fontSize: 13 }))).toMatchInlineSnapshot(`
71
- {
72
- "args": {
73
- "values": {
74
- "value": {
75
- "fontSize": 13,
76
- },
77
- },
78
- "where": {
79
- "id": "singleton",
80
- },
81
- },
82
- "id": "00000000-0000-0000-0000-000000000000",
83
- "mutation": "_Derived_Update_app_config",
84
- }
85
- `);
86
- });
87
- });
88
- const patchId = (muationEvent) => {
89
- // TODO use new id paradigm
90
- const id = `00000000-0000-0000-0000-000000000000`;
91
- return { ...muationEvent, id };
92
- };
93
- //# sourceMappingURL=derived-mutations.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived-mutations.test.js","sourceRoot":"","sources":["../src/derived-mutations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAGzD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAUlG,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;KAahH,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAU5E,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAWzD,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;KAcxF,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;KAezE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,CAAC,YAA6C,EAAE,EAAE;IAChE,2BAA2B;IAC3B,MAAM,EAAE,GAAG,sCAAsC,CAAA;IACjD,OAAO,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAA;AAChC,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { SqliteDb } from './adapter-types.js';
2
- import type { LiveStoreSchema } from './schema/mod.js';
3
- export declare const initializeSingletonTables: (schema: LiveStoreSchema, db: SqliteDb) => void;
4
- //# sourceMappingURL=init-singleton-tables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-singleton-tables.d.ts","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,eAAO,MAAM,yBAAyB,GAAI,QAAQ,eAAe,EAAE,IAAI,QAAQ,SAkB9E,CAAA"}
@@ -1,16 +0,0 @@
1
- import { getDefaultValuesEncoded } from './schema/schema-helpers.js';
2
- import { prepareBindValues, sql } from './util.js';
3
- export const initializeSingletonTables = (schema, db) => {
4
- for (const [, tableDef] of schema.tables) {
5
- if (tableDef.options.isSingleton) {
6
- const defaultValues = getDefaultValuesEncoded(tableDef, undefined);
7
- const defaultColumnNames = [...Object.keys(defaultValues), 'id'];
8
- const columnValues = defaultColumnNames.map((name) => `$${name}`).join(', ');
9
- const tableName = tableDef.sqliteDef.name;
10
- const insertQuery = sql `insert into ${tableName} (${defaultColumnNames.join(', ')}) select ${columnValues} where not exists(select 1 from ${tableName} where id = 'singleton')`;
11
- const bindValues = prepareBindValues({ ...defaultValues, id: 'singleton' }, insertQuery);
12
- db.execute(insertQuery, bindValues);
13
- }
14
- }
15
- };
16
- //# sourceMappingURL=init-singleton-tables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-singleton-tables.js","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAuB,EAAE,EAAY,EAAE,EAAE;IACjF,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAElE,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;YAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE5E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAA;YACzC,MAAM,WAAW,GAAG,GAAG,CAAA,eAAe,SAAS,KAAK,kBAAkB,CAAC,IAAI,CACzE,IAAI,CACL,YAAY,YAAY,mCAAmC,SAAS,0BAA0B,CAAA;YAE/F,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;YAExF,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-mutation.d.ts","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAyB,MAAM,yBAAyB,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAA0C,MAAM,kBAAkB,CAAA;AAC/F,OAAO,EACL,OAAO,EAKR,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,iBAAiB,GAAI,6CAI/B;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,WAAW,EAAE,QAAQ,CAAA;IACrB,aAAa,EAAE,QAAQ,CAAA;CACxB,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAoGlC,CAAA;AAEJ,eAAO,MAAM,QAAQ,GAAI,4CAItB;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,aAAa,EAAE,QAAQ,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;CACtC,sCAsCE,CAAA"}
@@ -1,122 +0,0 @@
1
- import { LS_DEV, memoizeByRef, shouldNeverHappen } from '@livestore/utils';
2
- import { Effect, ReadonlyArray, Schema } from '@livestore/utils/effect';
3
- import { getExecArgsFromMutation } from '../mutation.js';
4
- import { EventId, getMutationDef, MUTATION_LOG_META_TABLE, SESSION_CHANGESET_META_TABLE, sessionChangesetMetaTable, } from '../schema/mod.js';
5
- import { insertRow } from '../sql-queries/index.js';
6
- import { sql } from '../util.js';
7
- import { execSql, execSqlPrepared } from './connection.js';
8
- import * as Mutationlog from './mutationlog.js';
9
- export const makeApplyMutation = ({ schema, dbReadModel: db, dbMutationLog, }) => Effect.gen(function* () {
10
- const shouldExcludeMutationFromLog = makeShouldExcludeMutationFromLog(schema);
11
- const mutationDefSchemaHashMap = new Map(
12
- // TODO Running `Schema.hash` can be a bottleneck for larger schemas. There is an opportunity to run this
13
- // at build time and lookup the pre-computed hash at runtime.
14
- // Also see https://github.com/Effect-TS/effect/issues/2719
15
- [...schema.mutations.map.entries()].map(([k, v]) => [k, Schema.hash(v.schema)]));
16
- return (mutationEventEncoded, options) => Effect.gen(function* () {
17
- const skipMutationLog = options?.skipMutationLog ?? false;
18
- const mutationName = mutationEventEncoded.mutation;
19
- const mutationDef = getMutationDef(schema, mutationName);
20
- const execArgsArr = getExecArgsFromMutation({
21
- mutationDef,
22
- mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
23
- });
24
- // NOTE we might want to bring this back if we want to debug no-op mutations
25
- // const makeExecuteOptions = (statementSql: string, bindValues: any) => ({
26
- // onRowsChanged: (rowsChanged: number) => {
27
- // if (rowsChanged === 0) {
28
- // console.warn(`Mutation "${mutationDef.name}" did not affect any rows:`, statementSql, bindValues)
29
- // }
30
- // },
31
- // })
32
- // console.group('[@livestore/common:leader-thread:applyMutation]', { mutationName })
33
- const session = db.session();
34
- for (const { statementSql, bindValues } of execArgsArr) {
35
- // console.debug(mutationName, statementSql, bindValues)
36
- // TODO use cached prepared statements instead of exec
37
- yield* execSqlPrepared(db, statementSql, bindValues);
38
- }
39
- const changeset = session.changeset();
40
- session.finish();
41
- // TODO use prepared statements
42
- yield* execSql(db, ...insertRow({
43
- tableName: SESSION_CHANGESET_META_TABLE,
44
- columns: sessionChangesetMetaTable.sqliteDef.columns,
45
- values: {
46
- idGlobal: mutationEventEncoded.id.global,
47
- idClient: mutationEventEncoded.id.client,
48
- // NOTE the changeset will be empty (i.e. null) for no-op mutations
49
- changeset: changeset ?? null,
50
- debug: LS_DEV ? execArgsArr : null,
51
- },
52
- }));
53
- // console.groupEnd()
54
- // write to mutation_log
55
- const excludeFromMutationLog = shouldExcludeMutationFromLog(mutationName, mutationEventEncoded);
56
- if (skipMutationLog === false && excludeFromMutationLog === false) {
57
- const mutationName = mutationEventEncoded.mutation;
58
- const mutationDefSchemaHash = mutationDefSchemaHashMap.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
59
- yield* Mutationlog.insertIntoMutationLog(mutationEventEncoded, dbMutationLog, mutationDefSchemaHash, mutationEventEncoded.clientId, mutationEventEncoded.sessionId);
60
- }
61
- else {
62
- // console.debug('[@livestore/common:leader-thread] skipping mutation log write', mutation, statementSql, bindValues)
63
- }
64
- return {
65
- sessionChangeset: changeset
66
- ? {
67
- _tag: 'sessionChangeset',
68
- data: changeset,
69
- debug: LS_DEV ? execArgsArr : null,
70
- }
71
- : { _tag: 'no-op' },
72
- };
73
- }).pipe(Effect.withSpan(`@livestore/common:leader-thread:applyMutation`, {
74
- attributes: {
75
- mutationName: mutationEventEncoded.mutation,
76
- mutationId: mutationEventEncoded.id,
77
- 'span.label': `${EventId.toString(mutationEventEncoded.id)} ${mutationEventEncoded.mutation}`,
78
- },
79
- }));
80
- });
81
- export const rollback = ({ db, dbMutationLog, eventIdsToRollback, }) => Effect.gen(function* () {
82
- const rollbackEvents = db
83
- .select(sql `SELECT * FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`).join(', ')})`)
84
- .map((_) => ({ id: { global: _.idGlobal, client: _.idClient }, changeset: _.changeset, debug: _.debug }))
85
- .toSorted((a, b) => EventId.compare(a.id, b.id));
86
- // Apply changesets in reverse order
87
- for (let i = rollbackEvents.length - 1; i >= 0; i--) {
88
- const { changeset } = rollbackEvents[i];
89
- if (changeset !== null) {
90
- db.makeChangeset(changeset).invert().apply();
91
- }
92
- }
93
- const eventIdPairChunks = ReadonlyArray.chunksOf(100)(eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`));
94
- // Delete the changeset rows
95
- for (const eventIdPairChunk of eventIdPairChunks) {
96
- db.execute(sql `DELETE FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
97
- }
98
- // Delete the mutation log rows
99
- for (const eventIdPairChunk of eventIdPairChunks) {
100
- dbMutationLog.execute(sql `DELETE FROM ${MUTATION_LOG_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
101
- }
102
- }).pipe(Effect.withSpan('@livestore/common:LeaderSyncProcessor:rollback', {
103
- attributes: { count: eventIdsToRollback.length },
104
- }));
105
- // TODO let's consider removing this "should exclude" mechanism in favour of log compaction etc
106
- const makeShouldExcludeMutationFromLog = memoizeByRef((schema) => {
107
- const migrationOptions = schema.migrationOptions;
108
- const mutationLogExclude = migrationOptions.strategy === 'from-mutation-log'
109
- ? (migrationOptions.excludeMutations ?? new Set(['livestore.RawSql']))
110
- : new Set(['livestore.RawSql']);
111
- return (mutationName, mutationEventEncoded) => {
112
- if (mutationLogExclude.has(mutationName))
113
- return true;
114
- const mutationDef = getMutationDef(schema, mutationName);
115
- const execArgsArr = getExecArgsFromMutation({
116
- mutationDef,
117
- mutationEvent: { decoded: undefined, encoded: mutationEventEncoded },
118
- });
119
- return execArgsArr.some((_) => _.statementSql.includes('__livestore'));
120
- };
121
- });
122
- //# sourceMappingURL=apply-mutation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-mutation.js","sourceRoot":"","sources":["../../src/leader-thread/apply-mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAExD,OAAO,EACL,OAAO,EACP,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAG/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,MAAM,EACN,WAAW,EAAE,EAAE,EACf,aAAa,GAKd,EAAuC,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,4BAA4B,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAA;IAE7E,MAAM,wBAAwB,GAAG,IAAI,GAAG;IACtC,yGAAyG;IACzG,6DAA6D;IAC7D,2DAA2D;IAC3D,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAU,CAAC,CACzF,CAAA;IAED,OAAO,CAAC,oBAAoB,EAAE,OAAO,EAAE,EAAE,CACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,KAAK,CAAA;QAEzD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAA;QAClD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAExD,MAAM,WAAW,GAAG,uBAAuB,CAAC;YAC1C,WAAW;YACX,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE;SACrE,CAAC,CAAA;QAEF,4EAA4E;QAC5E,2EAA2E;QAC3E,8CAA8C;QAC9C,+BAA+B;QAC/B,0GAA0G;QAC1G,QAAQ;QACR,OAAO;QACP,KAAK;QAEL,qFAAqF;QAErF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QAE5B,KAAK,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,WAAW,EAAE,CAAC;YACvD,wDAAwD;YACxD,sDAAsD;YACtD,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;QACrC,OAAO,CAAC,MAAM,EAAE,CAAA;QAEhB,+BAA+B;QAC/B,KAAK,CAAC,CAAC,OAAO,CACZ,EAAE,EACF,GAAG,SAAS,CAAC;YACX,SAAS,EAAE,4BAA4B;YACvC,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,OAAO;YACpD,MAAM,EAAE;gBACN,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC,MAAM;gBACxC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC,MAAM;gBACxC,mEAAmE;gBACnE,SAAS,EAAE,SAAS,IAAI,IAAI;gBAC5B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;aACnC;SACF,CAAC,CACH,CAAA;QAED,qBAAqB;QAErB,wBAAwB;QACxB,MAAM,sBAAsB,GAAG,4BAA4B,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;QAC/F,IAAI,eAAe,KAAK,KAAK,IAAI,sBAAsB,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAA;YAClD,MAAM,qBAAqB,GACzB,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAA;YAEtG,KAAK,CAAC,CAAC,WAAW,CAAC,qBAAqB,CACtC,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,CAAC,QAAQ,EAC7B,oBAAoB,CAAC,SAAS,CAC/B,CAAA;QACH,CAAC;aAAM,CAAC;YACN,uHAAuH;QACzH,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,SAAS;gBACzB,CAAC,CAAC;oBACE,IAAI,EAAE,kBAA2B;oBACjC,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;iBACnC;gBACH,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE;SAC/B,CAAA;IACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,+CAA+C,EAAE;QAC/D,UAAU,EAAE;YACV,YAAY,EAAE,oBAAoB,CAAC,QAAQ;YAC3C,UAAU,EAAE,oBAAoB,CAAC,EAAE;YACnC,YAAY,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,QAAQ,EAAE;SAC9F;KACF,CAAC,CAEH,CAAA;AACL,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,EAAE,EACF,aAAa,EACb,kBAAkB,GAKnB,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,cAAc,GAAG,EAAE;SACtB,MAAM,CACL,GAAG,CAAA,iBAAiB,4BAA4B,mCAAmC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChK;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACxG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElD,oCAAoC;IACpC,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC,CAAE,CAAA;QACxC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CACnD,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAC/D,CAAA;IAED,4BAA4B;IAC5B,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,EAAE,CAAC,OAAO,CACR,GAAG,CAAA,eAAe,4BAA4B,mCAAmC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChH,CAAA;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,aAAa,CAAC,OAAO,CACnB,GAAG,CAAA,eAAe,uBAAuB,mCAAmC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3G,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE;IAChE,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE;CACjD,CAAC,CACH,CAAA;AAEH,+FAA+F;AAC/F,MAAM,gCAAgC,GAAG,YAAY,CAAC,CAAC,MAAuB,EAAE,EAAE;IAChF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAA;IAChD,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,QAAQ,KAAK,mBAAmB;QAC/C,CAAC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,IAAI,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAEnC,OAAO,CAAC,YAAoB,EAAE,oBAA8C,EAAW,EAAE;QACvF,IAAI,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAA;QAErD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACxD,MAAM,WAAW,GAAG,uBAAuB,CAAC;YAC1C,WAAW;YACX,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE;SACrE,CAAC,CAAA;QAEF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;IACxE,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,27 +0,0 @@
1
- import { Effect, Option, Schema } from '@livestore/utils/effect';
2
- import type { SqliteDb } from '../adapter-types.js';
3
- import * as EventId from '../schema/EventId.js';
4
- import * as MutationEvent from '../schema/MutationEvent.js';
5
- import { LeaderThreadCtx } from './types.js';
6
- export declare const initMutationLogDb: (dbMutationLog: SqliteDb) => Effect.Effect<void, import("../adapter-types.js").SqliteError, never>;
7
- /** Exclusive of the "since event" */
8
- export declare const getMutationEventsSince: (since: EventId.EventId) => Effect.Effect<ReadonlyArray<MutationEvent.EncodedWithMeta>, never, LeaderThreadCtx>;
9
- export declare const getClientHeadFromDb: (dbMutationLog: SqliteDb) => EventId.EventId;
10
- export declare const getBackendHeadFromDb: (dbMutationLog: SqliteDb) => EventId.GlobalEventId;
11
- export declare const updateBackendHead: (dbMutationLog: SqliteDb, head: EventId.EventId) => void;
12
- export declare const insertIntoMutationLog: (mutationEventEncoded: MutationEvent.EncodedWithMeta, dbMutationLog: SqliteDb, mutationDefSchemaHash: number, clientId: string, sessionId: string) => Effect.Effect<void, import("../adapter-types.js").SqliteError, never>;
13
- export declare const updateSyncMetadata: (items: ReadonlyArray<MutationEvent.EncodedWithMeta>) => Effect.Effect<void, import("../adapter-types.js").SqliteError, LeaderThreadCtx>;
14
- export declare const getSyncBackendCursorInfo: (remoteHead: EventId.GlobalEventId) => Effect.Effect<Option.None<{
15
- cursor: {
16
- global: EventId.GlobalEventId;
17
- client: EventId.ClientEventId;
18
- };
19
- metadata: Option.Option<Schema.JsonValue>;
20
- }> | Option.Some<{
21
- cursor: {
22
- global: EventId.GlobalEventId;
23
- client: EventId.ClientEventId;
24
- };
25
- metadata: Option.Option<Schema.JsonValue>;
26
- }>, never, LeaderThreadCtx>;
27
- //# sourceMappingURL=mutationlog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutationlog.d.ts","sourceRoot":"","sources":["../../src/leader-thread/mutationlog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAc3D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,iBAAiB,GAAI,eAAe,QAAQ,0EAwBrD,CAAA;AAEJ,qCAAqC;AACrC,eAAO,MAAM,sBAAsB,GACjC,OAAO,OAAO,CAAC,OAAO,KACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,eAAe,CAgDjF,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,eAAe,QAAQ,KAAG,OAAO,CAAC,OAMrE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,eAAe,QAAQ,KAAG,OAAO,CAAC,aAElD,CAAA;AAGrB,eAAO,MAAM,iBAAiB,GAAI,eAAe,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,SACG,CAAA;AAEnF,eAAO,MAAM,qBAAqB,GAChC,sBAAsB,aAAa,CAAC,eAAe,EACnD,eAAe,QAAQ,EACvB,uBAAuB,MAAM,EAC7B,UAAU,MAAM,EAChB,WAAW,MAAM,0EAsCf,CAAA;AAEJ,eAAO,MAAM,kBAAkB,GAAI,OAAO,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,oFAkBlF,CAAA;AAEJ,eAAO,MAAM,wBAAwB,GAAI,YAAY,OAAO,CAAC,aAAa;;;;;;;;;;;;2BAoB0C,CAAA"}