@livestore/common 0.3.0-dev.7 → 0.3.0-dev.9

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 (67) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/devtools/devtools-messages.d.ts +47 -47
  3. package/dist/index.d.ts +0 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/leader-thread/LeaderSyncProcessor.d.ts +37 -0
  6. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -0
  7. package/dist/leader-thread/LeaderSyncProcessor.js +421 -0
  8. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
  9. package/dist/leader-thread/apply-mutation.js +1 -1
  10. package/dist/leader-thread/apply-mutation.js.map +1 -1
  11. package/dist/leader-thread/leader-sync-processor.d.ts +2 -2
  12. package/dist/leader-thread/leader-sync-processor.d.ts.map +1 -1
  13. package/dist/leader-thread/leader-sync-processor.js.map +1 -1
  14. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  15. package/dist/leader-thread/make-leader-thread-layer.d.ts +5 -6
  16. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  17. package/dist/leader-thread/make-leader-thread-layer.js +7 -4
  18. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  19. package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
  20. package/dist/leader-thread/types.d.ts +11 -5
  21. package/dist/leader-thread/types.d.ts.map +1 -1
  22. package/dist/leader-thread/types.js.map +1 -1
  23. package/dist/schema/EventId.test.d.ts +2 -0
  24. package/dist/schema/EventId.test.d.ts.map +1 -0
  25. package/dist/schema/EventId.test.js +11 -0
  26. package/dist/schema/EventId.test.js.map +1 -0
  27. package/dist/schema/MutationEvent.d.ts +6 -5
  28. package/dist/schema/MutationEvent.d.ts.map +1 -1
  29. package/dist/schema/MutationEvent.js +2 -2
  30. package/dist/schema/MutationEvent.js.map +1 -1
  31. package/dist/schema/MutationEvent.test.d.ts +2 -0
  32. package/dist/schema/MutationEvent.test.d.ts.map +1 -0
  33. package/dist/schema/MutationEvent.test.js +2 -0
  34. package/dist/schema/MutationEvent.test.js.map +1 -0
  35. package/dist/sync/ClientSessionSyncProcessor.d.ts +45 -0
  36. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
  37. package/dist/sync/ClientSessionSyncProcessor.js +133 -0
  38. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
  39. package/dist/sync/index.d.ts +1 -1
  40. package/dist/sync/index.d.ts.map +1 -1
  41. package/dist/sync/index.js +1 -1
  42. package/dist/sync/index.js.map +1 -1
  43. package/dist/sync/sync.d.ts +15 -5
  44. package/dist/sync/sync.d.ts.map +1 -1
  45. package/dist/sync/sync.js.map +1 -1
  46. package/dist/sync/syncstate.d.ts +39 -17
  47. package/dist/sync/syncstate.d.ts.map +1 -1
  48. package/dist/sync/syncstate.js +56 -12
  49. package/dist/sync/syncstate.js.map +1 -1
  50. package/dist/sync/syncstate.test.js +123 -63
  51. package/dist/sync/syncstate.test.js.map +1 -1
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/package.json +3 -3
  55. package/src/index.ts +0 -6
  56. package/src/leader-thread/{leader-sync-processor.ts → LeaderSyncProcessor.ts} +205 -212
  57. package/src/leader-thread/apply-mutation.ts +1 -1
  58. package/src/leader-thread/make-leader-thread-layer.ts +9 -8
  59. package/src/leader-thread/types.ts +12 -4
  60. package/src/schema/EventId.test.ts +12 -0
  61. package/src/schema/MutationEvent.ts +7 -3
  62. package/src/sync/{client-session-sync-processor.ts → ClientSessionSyncProcessor.ts} +6 -5
  63. package/src/sync/index.ts +1 -1
  64. package/src/sync/sync.ts +15 -4
  65. package/src/sync/syncstate.test.ts +123 -63
  66. package/src/sync/syncstate.ts +21 -19
  67. package/src/version.ts +1 -1
@@ -39,19 +39,21 @@ import * as MutationEvent from '../schema/MutationEvent.js'
39
39
  * The `updateSyncState` function processes updates to the sync state based on incoming payloads,
40
40
  * handling cases such as upstream rebase, advance, local push, and rollback tail trimming.
41
41
  */
42
- export interface SyncState {
43
- pending: ReadonlyArray<MutationEvent.EncodedWithMeta>
44
- rollbackTail: ReadonlyArray<MutationEvent.EncodedWithMeta>
45
- upstreamHead: EventId.EventId
46
- localHead: EventId.EventId
47
- }
48
-
49
- export const SyncState = Schema.Struct({
42
+ export class SyncState extends Schema.Class<SyncState>('SyncState')({
50
43
  pending: Schema.Array(MutationEvent.EncodedWithMeta),
51
44
  rollbackTail: Schema.Array(MutationEvent.EncodedWithMeta),
52
45
  upstreamHead: EventId.EventId,
53
46
  localHead: EventId.EventId,
54
- }).annotations({ title: 'SyncState' })
47
+ }) {
48
+ toJSON = (): any => {
49
+ return {
50
+ pending: this.pending.map((e) => e.toJSON()),
51
+ rollbackTail: this.rollbackTail.map((e) => e.toJSON()),
52
+ upstreamHead: `(${this.upstreamHead.global},${this.upstreamHead.local})`,
53
+ localHead: `(${this.localHead.global},${this.localHead.local})`,
54
+ }
55
+ }
56
+ }
55
57
 
56
58
  export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
57
59
  /** Rollback until this event in the rollback tail (inclusive). Starting from the end of the rollback tail. */
@@ -153,12 +155,12 @@ export const updateSyncState = ({
153
155
 
154
156
  return {
155
157
  _tag: 'rebase',
156
- newSyncState: {
158
+ newSyncState: new SyncState({
157
159
  pending: rebasedPending,
158
160
  rollbackTail: trimRollbackTail([...syncState.rollbackTail.slice(0, rollbackIndex), ...payload.newEvents]),
159
161
  upstreamHead: newUpstreamHead,
160
162
  localHead: rebasedPending.at(-1)?.id ?? newUpstreamHead,
161
- },
163
+ }),
162
164
  previousSyncState: syncState,
163
165
  newEvents: payload.newEvents,
164
166
  eventsToRollback,
@@ -169,12 +171,12 @@ export const updateSyncState = ({
169
171
  if (payload.newEvents.length === 0) {
170
172
  return {
171
173
  _tag: 'advance',
172
- newSyncState: {
174
+ newSyncState: new SyncState({
173
175
  pending: syncState.pending,
174
176
  rollbackTail: trimRollbackTail(syncState.rollbackTail),
175
177
  upstreamHead: syncState.upstreamHead,
176
178
  localHead: syncState.localHead,
177
- },
179
+ }),
178
180
  previousSyncState: syncState,
179
181
  newEvents: [],
180
182
  }
@@ -235,12 +237,12 @@ export const updateSyncState = ({
235
237
 
236
238
  return {
237
239
  _tag: 'advance',
238
- newSyncState: {
240
+ newSyncState: new SyncState({
239
241
  pending: pendingRemaining,
240
242
  rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...pendingAndNewEvents]),
241
243
  upstreamHead: newUpstreamHead,
242
244
  localHead: pendingRemaining.at(-1)?.id ?? newUpstreamHead,
243
- },
245
+ }),
244
246
  previousSyncState: syncState,
245
247
  newEvents,
246
248
  }
@@ -262,12 +264,12 @@ export const updateSyncState = ({
262
264
 
263
265
  return {
264
266
  _tag: 'rebase',
265
- newSyncState: {
267
+ newSyncState: new SyncState({
266
268
  pending: rebasedPending,
267
269
  rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...payload.newEvents]),
268
270
  upstreamHead: newUpstreamHead,
269
271
  localHead: rebasedPending.at(-1)!.id,
270
- },
272
+ }),
271
273
  previousSyncState: syncState,
272
274
  newEvents: [...payload.newEvents.slice(divergentNewEventsIndex), ...rebasedPending],
273
275
  eventsToRollback: [...syncState.rollbackTail, ...divergentPending],
@@ -289,12 +291,12 @@ export const updateSyncState = ({
289
291
  } else {
290
292
  return {
291
293
  _tag: 'advance',
292
- newSyncState: {
294
+ newSyncState: new SyncState({
293
295
  pending: [...syncState.pending, ...payload.newEvents],
294
296
  rollbackTail: syncState.rollbackTail,
295
297
  upstreamHead: syncState.upstreamHead,
296
298
  localHead: payload.newEvents.at(-1)!.id,
297
- },
299
+ }),
298
300
  previousSyncState: syncState,
299
301
  newEvents: payload.newEvents,
300
302
  }
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.7' as const
5
+ export const liveStoreVersion = '0.3.0-dev.9' as const
6
6
 
7
7
  /**
8
8
  * This version number is incremented whenever the internal storage format changes in a breaking way.