@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/devtools/devtools-messages.d.ts +47 -47
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +37 -0
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -0
- package/dist/leader-thread/LeaderSyncProcessor.js +421 -0
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
- package/dist/leader-thread/apply-mutation.js +1 -1
- package/dist/leader-thread/apply-mutation.js.map +1 -1
- package/dist/leader-thread/leader-sync-processor.d.ts +2 -2
- package/dist/leader-thread/leader-sync-processor.d.ts.map +1 -1
- package/dist/leader-thread/leader-sync-processor.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +5 -6
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +7 -4
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
- package/dist/leader-thread/types.d.ts +11 -5
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/schema/EventId.test.d.ts +2 -0
- package/dist/schema/EventId.test.d.ts.map +1 -0
- package/dist/schema/EventId.test.js +11 -0
- package/dist/schema/EventId.test.js.map +1 -0
- package/dist/schema/MutationEvent.d.ts +6 -5
- package/dist/schema/MutationEvent.d.ts.map +1 -1
- package/dist/schema/MutationEvent.js +2 -2
- package/dist/schema/MutationEvent.js.map +1 -1
- package/dist/schema/MutationEvent.test.d.ts +2 -0
- package/dist/schema/MutationEvent.test.d.ts.map +1 -0
- package/dist/schema/MutationEvent.test.js +2 -0
- package/dist/schema/MutationEvent.test.js.map +1 -0
- package/dist/sync/ClientSessionSyncProcessor.d.ts +45 -0
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
- package/dist/sync/ClientSessionSyncProcessor.js +133 -0
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/sync.d.ts +15 -5
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +39 -17
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +56 -12
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +123 -63
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/index.ts +0 -6
- package/src/leader-thread/{leader-sync-processor.ts → LeaderSyncProcessor.ts} +205 -212
- package/src/leader-thread/apply-mutation.ts +1 -1
- package/src/leader-thread/make-leader-thread-layer.ts +9 -8
- package/src/leader-thread/types.ts +12 -4
- package/src/schema/EventId.test.ts +12 -0
- package/src/schema/MutationEvent.ts +7 -3
- package/src/sync/{client-session-sync-processor.ts → ClientSessionSyncProcessor.ts} +6 -5
- package/src/sync/index.ts +1 -1
- package/src/sync/sync.ts +15 -4
- package/src/sync/syncstate.test.ts +123 -63
- package/src/sync/syncstate.ts +21 -19
- package/src/version.ts +1 -1
package/dist/sync/syncstate.d.ts
CHANGED
@@ -1,6 +1,43 @@
|
|
1
1
|
import { Schema } from '@livestore/utils/effect';
|
2
2
|
import * as EventId from '../schema/EventId.js';
|
3
3
|
import * as MutationEvent from '../schema/MutationEvent.js';
|
4
|
+
declare const SyncState_base: Schema.Class<SyncState, {
|
5
|
+
pending: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
6
|
+
rollbackTail: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
7
|
+
upstreamHead: Schema.Struct<{
|
8
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
9
|
+
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
10
|
+
}>;
|
11
|
+
localHead: Schema.Struct<{
|
12
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
13
|
+
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
14
|
+
}>;
|
15
|
+
}, Schema.Struct.Encoded<{
|
16
|
+
pending: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
17
|
+
rollbackTail: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
18
|
+
upstreamHead: Schema.Struct<{
|
19
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
20
|
+
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
21
|
+
}>;
|
22
|
+
localHead: Schema.Struct<{
|
23
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
24
|
+
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
25
|
+
}>;
|
26
|
+
}>, never, {
|
27
|
+
readonly pending: readonly MutationEvent.EncodedWithMeta[];
|
28
|
+
} & {
|
29
|
+
readonly upstreamHead: {
|
30
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
31
|
+
readonly local: number & import("effect/Brand").Brand<"LocalEventId">;
|
32
|
+
};
|
33
|
+
} & {
|
34
|
+
readonly localHead: {
|
35
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
36
|
+
readonly local: number & import("effect/Brand").Brand<"LocalEventId">;
|
37
|
+
};
|
38
|
+
} & {
|
39
|
+
readonly rollbackTail: readonly MutationEvent.EncodedWithMeta[];
|
40
|
+
}, {}, {}>;
|
4
41
|
/**
|
5
42
|
* SyncState represents the current sync state of a sync node relative to an upstream node.
|
6
43
|
* Events flow from local to upstream, with each state maintaining its own event head.
|
@@ -36,24 +73,9 @@ import * as MutationEvent from '../schema/MutationEvent.js';
|
|
36
73
|
* The `updateSyncState` function processes updates to the sync state based on incoming payloads,
|
37
74
|
* handling cases such as upstream rebase, advance, local push, and rollback tail trimming.
|
38
75
|
*/
|
39
|
-
export
|
40
|
-
|
41
|
-
rollbackTail: ReadonlyArray<MutationEvent.EncodedWithMeta>;
|
42
|
-
upstreamHead: EventId.EventId;
|
43
|
-
localHead: EventId.EventId;
|
76
|
+
export declare class SyncState extends SyncState_base {
|
77
|
+
toJSON: () => any;
|
44
78
|
}
|
45
|
-
export declare const SyncState: Schema.Struct<{
|
46
|
-
pending: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
47
|
-
rollbackTail: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
48
|
-
upstreamHead: Schema.Struct<{
|
49
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
50
|
-
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
51
|
-
}>;
|
52
|
-
localHead: Schema.Struct<{
|
53
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
54
|
-
local: Schema.BrandSchema<number & import("effect/Brand").Brand<"LocalEventId">, number, never>;
|
55
|
-
}>;
|
56
|
-
}>;
|
57
79
|
declare const PayloadUpstreamRebase_base: Schema.TaggedStruct<"upstream-rebase", {
|
58
80
|
/** Rollback until this event in the rollback tail (inclusive). Starting from the end of the rollback tail. */
|
59
81
|
rollbackUntil: Schema.Struct<{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA
|
1
|
+
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,SAAU,SAAQ,cAK7B;IACA,MAAM,QAAO,GAAG,CAOf;CACF;;IAGC,8GAA8G;;;;;;IAG9G,uDAAuD;;;;;;AAJzD,qBAAa,qBAAsB,SAAQ,0BAMzC;CAAG;;;IAIH,uDAAuD;;;;;;AAFzD,qBAAa,sBAAuB,SAAQ,2BAI1C;CAAG;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG;;AAEL,qBAAa,OAAQ,SAAQ,YAA6E;CAAG;AAE7G,eAAO,MAAM,eAAe,6EAA8D,CAAA;AAE1F,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,SAAS,CAAA;IACf,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,qDAAqD;IACrD,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,qDAAqD;IACrD,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;IACvD,gBAAgB,EAAE,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;CAC/D,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,iBAAiB,EAAE,SAAS,CAAA;IAC5B,mDAAmD;IACnD,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,kBAAkB,CAAA;AAExF,eAAO,MAAM,eAAe,2EAMzB;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC,IAAI,CAAA;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,KAAK,OAAO,CAAA;IAC/D,YAAY,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,CAAC,EAAE,aAAa,CAAC,eAAe,KAAK,OAAO,CAAA;IAC7F,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,KAAG,YA+MH,CAAA"}
|
package/dist/sync/syncstate.js
CHANGED
@@ -2,12 +2,56 @@ import { shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { ReadonlyArray, Schema } from '@livestore/utils/effect';
|
3
3
|
import * as EventId from '../schema/EventId.js';
|
4
4
|
import * as MutationEvent from '../schema/MutationEvent.js';
|
5
|
-
|
5
|
+
/**
|
6
|
+
* SyncState represents the current sync state of a sync node relative to an upstream node.
|
7
|
+
* Events flow from local to upstream, with each state maintaining its own event head.
|
8
|
+
*
|
9
|
+
* Event Chain Structure:
|
10
|
+
* ```
|
11
|
+
* +-------------------------+------------------------+
|
12
|
+
* | ROLLBACK TAIL | PENDING EVENTS |
|
13
|
+
* +-------------------------+------------------------+
|
14
|
+
* ▼ ▼
|
15
|
+
* Upstream Head Local Head
|
16
|
+
* Example: (0,0), (0,1), (1,0) (1,1), (1,2), (2,0)
|
17
|
+
* ```
|
18
|
+
*
|
19
|
+
* State:
|
20
|
+
* - **Pending Events**: Events awaiting acknowledgment from the upstream.
|
21
|
+
* - Can be confirmed or rejected by the upstream.
|
22
|
+
* - Subject to rebase if rejected.
|
23
|
+
* - **Rollback Tail**: Events that are kept around temporarily for potential rollback until confirmed by upstream.
|
24
|
+
*
|
25
|
+
* Payloads:
|
26
|
+
* - `PayloadUpstreamRebase`: Upstream has performed a rebase, so downstream must roll back to the specified event
|
27
|
+
* and rebase the pending events on top of the new events.
|
28
|
+
* - `PayloadUpstreamAdvance`: Upstream has advanced, so downstream must rebase the pending events on top of the new events.
|
29
|
+
* - `PayloadUpstreamTrimRollbackTail`: Upstream has advanced, so downstream can trim the rollback tail.
|
30
|
+
* - `PayloadLocalPush`: Local push payload
|
31
|
+
*
|
32
|
+
* Invariants:
|
33
|
+
* 1. **Chain Continuity**: Each event must reference its immediate parent.
|
34
|
+
* 2. **Head Ordering**: Upstream Head ≤ Local Head.
|
35
|
+
* 3. **ID Sequence**: Must follow the pattern (1,0)→(1,1)→(1,2)→(2,0).
|
36
|
+
*
|
37
|
+
* The `updateSyncState` function processes updates to the sync state based on incoming payloads,
|
38
|
+
* handling cases such as upstream rebase, advance, local push, and rollback tail trimming.
|
39
|
+
*/
|
40
|
+
export class SyncState extends Schema.Class('SyncState')({
|
6
41
|
pending: Schema.Array(MutationEvent.EncodedWithMeta),
|
7
42
|
rollbackTail: Schema.Array(MutationEvent.EncodedWithMeta),
|
8
43
|
upstreamHead: EventId.EventId,
|
9
44
|
localHead: EventId.EventId,
|
10
|
-
})
|
45
|
+
}) {
|
46
|
+
toJSON = () => {
|
47
|
+
return {
|
48
|
+
pending: this.pending.map((e) => e.toJSON()),
|
49
|
+
rollbackTail: this.rollbackTail.map((e) => e.toJSON()),
|
50
|
+
upstreamHead: `(${this.upstreamHead.global},${this.upstreamHead.local})`,
|
51
|
+
localHead: `(${this.localHead.global},${this.localHead.local})`,
|
52
|
+
};
|
53
|
+
};
|
54
|
+
}
|
11
55
|
export class PayloadUpstreamRebase extends Schema.TaggedStruct('upstream-rebase', {
|
12
56
|
/** Rollback until this event in the rollback tail (inclusive). Starting from the end of the rollback tail. */
|
13
57
|
rollbackUntil: EventId.EventId,
|
@@ -57,12 +101,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
57
101
|
});
|
58
102
|
return {
|
59
103
|
_tag: 'rebase',
|
60
|
-
newSyncState: {
|
104
|
+
newSyncState: new SyncState({
|
61
105
|
pending: rebasedPending,
|
62
106
|
rollbackTail: trimRollbackTail([...syncState.rollbackTail.slice(0, rollbackIndex), ...payload.newEvents]),
|
63
107
|
upstreamHead: newUpstreamHead,
|
64
108
|
localHead: rebasedPending.at(-1)?.id ?? newUpstreamHead,
|
65
|
-
},
|
109
|
+
}),
|
66
110
|
previousSyncState: syncState,
|
67
111
|
newEvents: payload.newEvents,
|
68
112
|
eventsToRollback,
|
@@ -72,12 +116,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
72
116
|
if (payload.newEvents.length === 0) {
|
73
117
|
return {
|
74
118
|
_tag: 'advance',
|
75
|
-
newSyncState: {
|
119
|
+
newSyncState: new SyncState({
|
76
120
|
pending: syncState.pending,
|
77
121
|
rollbackTail: trimRollbackTail(syncState.rollbackTail),
|
78
122
|
upstreamHead: syncState.upstreamHead,
|
79
123
|
localHead: syncState.localHead,
|
80
|
-
},
|
124
|
+
}),
|
81
125
|
previousSyncState: syncState,
|
82
126
|
newEvents: [],
|
83
127
|
};
|
@@ -127,12 +171,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
127
171
|
});
|
128
172
|
return {
|
129
173
|
_tag: 'advance',
|
130
|
-
newSyncState: {
|
174
|
+
newSyncState: new SyncState({
|
131
175
|
pending: pendingRemaining,
|
132
176
|
rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...pendingAndNewEvents]),
|
133
177
|
upstreamHead: newUpstreamHead,
|
134
178
|
localHead: pendingRemaining.at(-1)?.id ?? newUpstreamHead,
|
135
|
-
},
|
179
|
+
}),
|
136
180
|
previousSyncState: syncState,
|
137
181
|
newEvents,
|
138
182
|
};
|
@@ -153,12 +197,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
153
197
|
});
|
154
198
|
return {
|
155
199
|
_tag: 'rebase',
|
156
|
-
newSyncState: {
|
200
|
+
newSyncState: new SyncState({
|
157
201
|
pending: rebasedPending,
|
158
202
|
rollbackTail: trimRollbackTail([...syncState.rollbackTail, ...payload.newEvents]),
|
159
203
|
upstreamHead: newUpstreamHead,
|
160
204
|
localHead: rebasedPending.at(-1).id,
|
161
|
-
},
|
205
|
+
}),
|
162
206
|
previousSyncState: syncState,
|
163
207
|
newEvents: [...payload.newEvents.slice(divergentNewEventsIndex), ...rebasedPending],
|
164
208
|
eventsToRollback: [...syncState.rollbackTail, ...divergentPending],
|
@@ -178,12 +222,12 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
178
222
|
else {
|
179
223
|
return {
|
180
224
|
_tag: 'advance',
|
181
|
-
newSyncState: {
|
225
|
+
newSyncState: new SyncState({
|
182
226
|
pending: [...syncState.pending, ...payload.newEvents],
|
183
227
|
rollbackTail: syncState.rollbackTail,
|
184
228
|
upstreamHead: syncState.upstreamHead,
|
185
229
|
localHead: payload.newEvents.at(-1).id,
|
186
|
-
},
|
230
|
+
}),
|
187
231
|
previousSyncState: syncState,
|
188
232
|
newEvents: payload.newEvents,
|
189
233
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;
|
1
|
+
{"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"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"}
|