@livestore/common 0.0.0-snapshot-abe9ae4963ab9d3948906a6642c39bc33295e9f6 → 0.0.0-snapshot-484c9684bac8056d764aa460fd025c45f5856aa5
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/adapter-types.d.ts +5 -4
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
- package/dist/devtools/devtools-messages-common.d.ts +6 -6
- package/dist/devtools/devtools-messages-leader.d.ts +28 -28
- package/dist/devtools/index.d.ts +17 -0
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +20 -0
- package/dist/devtools/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +3 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +124 -43
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
- package/dist/leader-thread/apply-mutation.js +8 -2
- package/dist/leader-thread/apply-mutation.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +1 -0
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/pull-queue-set.d.ts +3 -3
- package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
- package/dist/leader-thread/pull-queue-set.js +9 -0
- package/dist/leader-thread/pull-queue-set.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -5
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -4
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +7 -2
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/schema/EventId.d.ts +8 -0
- package/dist/schema/EventId.d.ts.map +1 -1
- package/dist/schema/EventId.js +14 -0
- package/dist/schema/EventId.js.map +1 -1
- package/dist/schema/MutationEvent.js +1 -1
- package/dist/schema/MutationEvent.js.map +1 -1
- package/dist/schema/db-schema/dsl/field-defs.d.ts.map +1 -1
- package/dist/schema/db-schema/dsl/field-defs.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +11 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +48 -14
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/sync.d.ts +14 -9
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +7 -3
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +132 -21
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +129 -41
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +19 -7
- 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 +2 -2
- package/src/adapter-types.ts +5 -4
- package/src/devtools/index.ts +27 -0
- package/src/leader-thread/LeaderSyncProcessor.ts +164 -54
- package/src/leader-thread/apply-mutation.ts +17 -2
- package/src/leader-thread/make-leader-thread-layer.ts +1 -0
- package/src/leader-thread/pull-queue-set.ts +10 -1
- package/src/leader-thread/shutdown-channel.ts +2 -4
- package/src/leader-thread/types.ts +8 -2
- package/src/schema/EventId.ts +16 -0
- package/src/schema/MutationEvent.ts +1 -1
- package/src/schema/db-schema/dsl/field-defs.ts +1 -2
- package/src/sync/ClientSessionSyncProcessor.ts +78 -13
- package/src/sync/sync.ts +7 -4
- package/src/sync/syncstate.test.ts +32 -14
- package/src/sync/syncstate.ts +145 -60
- package/src/version.ts +1 -1
package/dist/sync/syncstate.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from '@livestore/utils/effect';
|
|
2
|
-
import
|
|
2
|
+
import { UnexpectedError } from '../adapter-types.js';
|
|
3
3
|
import * as MutationEvent from '../schema/MutationEvent.js';
|
|
4
4
|
declare const SyncState_base: Schema.Class<SyncState, {
|
|
5
5
|
pending: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
@@ -111,28 +111,139 @@ export declare class Payload extends Payload_base {
|
|
|
111
111
|
}
|
|
112
112
|
export declare const PayloadUpstream: Schema.Union<[typeof PayloadUpstreamRebase, typeof PayloadUpstreamAdvance]>;
|
|
113
113
|
export type PayloadUpstream = typeof PayloadUpstream.Type;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
declare const UpdateContext_base: Schema.Class<UpdateContext, {
|
|
115
|
+
payload: typeof Payload;
|
|
116
|
+
syncState: typeof SyncState;
|
|
117
|
+
}, Schema.Struct.Encoded<{
|
|
118
|
+
payload: typeof Payload;
|
|
119
|
+
syncState: typeof SyncState;
|
|
120
|
+
}>, never, {
|
|
121
|
+
readonly payload: {
|
|
122
|
+
readonly _tag: "upstream-rebase";
|
|
123
|
+
readonly rollbackUntil: {
|
|
124
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
125
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
126
|
+
};
|
|
127
|
+
readonly newEvents: readonly MutationEvent.EncodedWithMeta[];
|
|
128
|
+
readonly trimRollbackUntil?: {
|
|
129
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
130
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
131
|
+
} | undefined;
|
|
132
|
+
} | {
|
|
133
|
+
readonly _tag: "upstream-advance";
|
|
134
|
+
readonly newEvents: readonly MutationEvent.EncodedWithMeta[];
|
|
135
|
+
readonly trimRollbackUntil?: {
|
|
136
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
137
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
138
|
+
} | undefined;
|
|
139
|
+
} | {
|
|
140
|
+
readonly _tag: "local-push";
|
|
141
|
+
readonly newEvents: readonly MutationEvent.EncodedWithMeta[];
|
|
142
|
+
};
|
|
143
|
+
} & {
|
|
144
|
+
readonly syncState: SyncState;
|
|
145
|
+
}, {}, {}>;
|
|
146
|
+
/** Only used for debugging purposes */
|
|
147
|
+
export declare class UpdateContext extends UpdateContext_base {
|
|
148
|
+
toJSON: () => any;
|
|
149
|
+
}
|
|
150
|
+
declare const UpdateResultAdvance_base: Schema.Class<UpdateResultAdvance, {
|
|
151
|
+
_tag: Schema.Literal<["advance"]>;
|
|
152
|
+
newSyncState: typeof SyncState;
|
|
118
153
|
/** Events which weren't pending before the update */
|
|
119
|
-
newEvents:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
_tag:
|
|
123
|
-
newSyncState: SyncState;
|
|
124
|
-
previousSyncState: SyncState;
|
|
154
|
+
newEvents: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
155
|
+
updateContext: typeof UpdateContext;
|
|
156
|
+
}, Schema.Struct.Encoded<{
|
|
157
|
+
_tag: Schema.Literal<["advance"]>;
|
|
158
|
+
newSyncState: typeof SyncState;
|
|
125
159
|
/** Events which weren't pending before the update */
|
|
126
|
-
newEvents:
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
160
|
+
newEvents: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
161
|
+
updateContext: typeof UpdateContext;
|
|
162
|
+
}>, never, {
|
|
163
|
+
readonly _tag: "advance";
|
|
164
|
+
} & {
|
|
165
|
+
readonly newEvents: readonly MutationEvent.EncodedWithMeta[];
|
|
166
|
+
} & {
|
|
167
|
+
readonly newSyncState: SyncState;
|
|
168
|
+
} & {
|
|
169
|
+
readonly updateContext: UpdateContext;
|
|
170
|
+
}, {}, {}>;
|
|
171
|
+
export declare class UpdateResultAdvance extends UpdateResultAdvance_base {
|
|
172
|
+
toJSON: () => any;
|
|
173
|
+
}
|
|
174
|
+
declare const UpdateResultRebase_base: Schema.Class<UpdateResultRebase, {
|
|
175
|
+
_tag: Schema.Literal<["rebase"]>;
|
|
176
|
+
newSyncState: typeof SyncState;
|
|
177
|
+
/** Events which weren't pending before the update */
|
|
178
|
+
newEvents: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
179
|
+
eventsToRollback: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
180
|
+
updateContext: typeof UpdateContext;
|
|
181
|
+
}, Schema.Struct.Encoded<{
|
|
182
|
+
_tag: Schema.Literal<["rebase"]>;
|
|
183
|
+
newSyncState: typeof SyncState;
|
|
184
|
+
/** Events which weren't pending before the update */
|
|
185
|
+
newEvents: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
186
|
+
eventsToRollback: Schema.Array$<typeof MutationEvent.EncodedWithMeta>;
|
|
187
|
+
updateContext: typeof UpdateContext;
|
|
188
|
+
}>, never, {
|
|
189
|
+
readonly _tag: "rebase";
|
|
190
|
+
} & {
|
|
191
|
+
readonly newEvents: readonly MutationEvent.EncodedWithMeta[];
|
|
192
|
+
} & {
|
|
193
|
+
readonly newSyncState: SyncState;
|
|
194
|
+
} & {
|
|
195
|
+
readonly updateContext: UpdateContext;
|
|
196
|
+
} & {
|
|
197
|
+
readonly eventsToRollback: readonly MutationEvent.EncodedWithMeta[];
|
|
198
|
+
}, {}, {}>;
|
|
199
|
+
export declare class UpdateResultRebase extends UpdateResultRebase_base {
|
|
200
|
+
toJSON: () => any;
|
|
201
|
+
}
|
|
202
|
+
declare const UpdateResultReject_base: Schema.Class<UpdateResultReject, {
|
|
203
|
+
_tag: Schema.Literal<["reject"]>;
|
|
132
204
|
/** The minimum id that the new events must have */
|
|
133
|
-
expectedMinimumId:
|
|
134
|
-
|
|
135
|
-
|
|
205
|
+
expectedMinimumId: Schema.Struct<{
|
|
206
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
207
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
|
208
|
+
}>;
|
|
209
|
+
updateContext: typeof UpdateContext;
|
|
210
|
+
}, Schema.Struct.Encoded<{
|
|
211
|
+
_tag: Schema.Literal<["reject"]>;
|
|
212
|
+
/** The minimum id that the new events must have */
|
|
213
|
+
expectedMinimumId: Schema.Struct<{
|
|
214
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
215
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
|
216
|
+
}>;
|
|
217
|
+
updateContext: typeof UpdateContext;
|
|
218
|
+
}>, never, {
|
|
219
|
+
readonly _tag: "reject";
|
|
220
|
+
} & {
|
|
221
|
+
readonly updateContext: UpdateContext;
|
|
222
|
+
} & {
|
|
223
|
+
readonly expectedMinimumId: {
|
|
224
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
|
225
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
|
226
|
+
};
|
|
227
|
+
}, {}, {}>;
|
|
228
|
+
export declare class UpdateResultReject extends UpdateResultReject_base {
|
|
229
|
+
toJSON: () => any;
|
|
230
|
+
}
|
|
231
|
+
declare const UpdateResultUnexpectedError_base: Schema.Class<UpdateResultUnexpectedError, {
|
|
232
|
+
_tag: Schema.Literal<["unexpected-error"]>;
|
|
233
|
+
cause: typeof UnexpectedError;
|
|
234
|
+
}, Schema.Struct.Encoded<{
|
|
235
|
+
_tag: Schema.Literal<["unexpected-error"]>;
|
|
236
|
+
cause: typeof UnexpectedError;
|
|
237
|
+
}>, never, {
|
|
238
|
+
readonly _tag: "unexpected-error";
|
|
239
|
+
} & {
|
|
240
|
+
readonly cause: UnexpectedError;
|
|
241
|
+
}, {}, {}>;
|
|
242
|
+
export declare class UpdateResultUnexpectedError extends UpdateResultUnexpectedError_base {
|
|
243
|
+
}
|
|
244
|
+
declare const UpdateResult_base: Schema.Union<[typeof UpdateResultAdvance, typeof UpdateResultRebase, typeof UpdateResultReject, typeof UpdateResultUnexpectedError]>;
|
|
245
|
+
export declare class UpdateResult extends UpdateResult_base {
|
|
246
|
+
}
|
|
136
247
|
export declare const updateSyncState: ({ syncState, payload, isLocalEvent, isEqualEvent, ignoreLocalEvents, }: {
|
|
137
248
|
syncState: SyncState;
|
|
138
249
|
payload: typeof Payload.Type;
|
|
@@ -140,6 +251,6 @@ export declare const updateSyncState: ({ syncState, payload, isLocalEvent, isEqu
|
|
|
140
251
|
isEqualEvent: (a: MutationEvent.EncodedWithMeta, b: MutationEvent.EncodedWithMeta) => boolean;
|
|
141
252
|
/** This is used in the leader which should ignore local events when receiving an upstream-advance payload */
|
|
142
253
|
ignoreLocalEvents?: boolean;
|
|
143
|
-
}) => UpdateResult;
|
|
254
|
+
}) => typeof UpdateResult.Type;
|
|
144
255
|
export {};
|
|
145
256
|
//# sourceMappingURL=syncstate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,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,uCAAuC;AACvC,qBAAa,aAAc,SAAQ,kBAGjC;IACA,MAAM,QAAO,GAAG,CAoBf;CACF;;;;IAKC,qDAAqD;;;;;;IAArD,qDAAqD;;;;;;;;;;;;AAHvD,qBAAa,mBAAoB,SAAQ,wBAMvC;IACA,MAAM,QAAO,GAAG,CAOf;CACF;;;;IAKC,qDAAqD;;;;;;;IAArD,qDAAqD;;;;;;;;;;;;;;;AAHvD,qBAAa,kBAAmB,SAAQ,uBAOtC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;IAIC,mDAAmD;;;;;;;;IAAnD,mDAAmD;;;;;;;;;;;;;;;;AAFrD,qBAAa,kBAAmB,SAAQ,uBAKtC;IACA,MAAM,QAAO,GAAG,CAMf;CACF;;;;;;;;;;;;AAED,qBAAa,2BAA4B,SAAQ,gCAK/C;CAAG;;AAEL,qBAAa,YAAa,SAAQ,iBAKjC;CAAG;AAQJ,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,OAAO,YAAY,CAAC,IAiNvB,CAAA"}
|
package/dist/sync/syncstate.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ReadonlyArray, Schema } from '@livestore/utils/effect';
|
|
1
|
+
import { casesHandled } from '@livestore/utils';
|
|
2
|
+
import { Match, ReadonlyArray, Schema } from '@livestore/utils/effect';
|
|
3
|
+
import { UnexpectedError } from '../adapter-types.js';
|
|
3
4
|
import * as EventId from '../schema/EventId.js';
|
|
4
5
|
import * as MutationEvent from '../schema/MutationEvent.js';
|
|
5
6
|
/**
|
|
@@ -73,6 +74,87 @@ export class PayloadLocalPush extends Schema.TaggedStruct('local-push', {
|
|
|
73
74
|
export class Payload extends Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance, PayloadLocalPush) {
|
|
74
75
|
}
|
|
75
76
|
export const PayloadUpstream = Schema.Union(PayloadUpstreamRebase, PayloadUpstreamAdvance);
|
|
77
|
+
/** Only used for debugging purposes */
|
|
78
|
+
export class UpdateContext extends Schema.Class('UpdateContext')({
|
|
79
|
+
payload: Payload,
|
|
80
|
+
syncState: SyncState,
|
|
81
|
+
}) {
|
|
82
|
+
toJSON = () => {
|
|
83
|
+
const payload = Match.value(this.payload).pipe(Match.tag('local-push', () => ({
|
|
84
|
+
_tag: 'local-push',
|
|
85
|
+
newEvents: this.payload.newEvents.map((e) => e.toJSON()),
|
|
86
|
+
})), Match.tag('upstream-advance', () => ({
|
|
87
|
+
_tag: 'upstream-advance',
|
|
88
|
+
newEvents: this.payload.newEvents.map((e) => e.toJSON()),
|
|
89
|
+
})), Match.tag('upstream-rebase', () => ({
|
|
90
|
+
_tag: 'upstream-rebase',
|
|
91
|
+
newEvents: this.payload.newEvents.map((e) => e.toJSON()),
|
|
92
|
+
})), Match.exhaustive);
|
|
93
|
+
return {
|
|
94
|
+
payload,
|
|
95
|
+
syncState: this.syncState.toJSON(),
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export class UpdateResultAdvance extends Schema.Class('UpdateResultAdvance')({
|
|
100
|
+
_tag: Schema.Literal('advance'),
|
|
101
|
+
newSyncState: SyncState,
|
|
102
|
+
/** Events which weren't pending before the update */
|
|
103
|
+
newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
|
|
104
|
+
updateContext: UpdateContext,
|
|
105
|
+
}) {
|
|
106
|
+
toJSON = () => {
|
|
107
|
+
return {
|
|
108
|
+
_tag: this._tag,
|
|
109
|
+
newSyncState: this.newSyncState.toJSON(),
|
|
110
|
+
newEvents: this.newEvents.map((e) => e.toJSON()),
|
|
111
|
+
updateContext: this.updateContext.toJSON(),
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export class UpdateResultRebase extends Schema.Class('UpdateResultRebase')({
|
|
116
|
+
_tag: Schema.Literal('rebase'),
|
|
117
|
+
newSyncState: SyncState,
|
|
118
|
+
/** Events which weren't pending before the update */
|
|
119
|
+
newEvents: Schema.Array(MutationEvent.EncodedWithMeta),
|
|
120
|
+
eventsToRollback: Schema.Array(MutationEvent.EncodedWithMeta),
|
|
121
|
+
updateContext: UpdateContext,
|
|
122
|
+
}) {
|
|
123
|
+
toJSON = () => {
|
|
124
|
+
return {
|
|
125
|
+
_tag: this._tag,
|
|
126
|
+
newSyncState: this.newSyncState.toJSON(),
|
|
127
|
+
newEvents: this.newEvents.map((e) => e.toJSON()),
|
|
128
|
+
eventsToRollback: this.eventsToRollback.map((e) => e.toJSON()),
|
|
129
|
+
updateContext: this.updateContext.toJSON(),
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
export class UpdateResultReject extends Schema.Class('UpdateResultReject')({
|
|
134
|
+
_tag: Schema.Literal('reject'),
|
|
135
|
+
/** The minimum id that the new events must have */
|
|
136
|
+
expectedMinimumId: EventId.EventId,
|
|
137
|
+
updateContext: UpdateContext,
|
|
138
|
+
}) {
|
|
139
|
+
toJSON = () => {
|
|
140
|
+
return {
|
|
141
|
+
_tag: this._tag,
|
|
142
|
+
expectedMinimumId: `(${this.expectedMinimumId.global},${this.expectedMinimumId.client})`,
|
|
143
|
+
updateContext: this.updateContext.toJSON(),
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export class UpdateResultUnexpectedError extends Schema.Class('UpdateResultUnexpectedError')({
|
|
148
|
+
_tag: Schema.Literal('unexpected-error'),
|
|
149
|
+
cause: UnexpectedError,
|
|
150
|
+
}) {
|
|
151
|
+
}
|
|
152
|
+
export class UpdateResult extends Schema.Union(UpdateResultAdvance, UpdateResultRebase, UpdateResultReject, UpdateResultUnexpectedError) {
|
|
153
|
+
}
|
|
154
|
+
const unexpectedError = (cause) => UpdateResultUnexpectedError.make({
|
|
155
|
+
_tag: 'unexpected-error',
|
|
156
|
+
cause: new UnexpectedError({ cause }),
|
|
157
|
+
});
|
|
76
158
|
export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent, ignoreLocalEvents = false, }) => {
|
|
77
159
|
const trimRollbackTail = (rollbackTail) => {
|
|
78
160
|
const trimRollbackUntil = payload._tag === 'local-push' ? undefined : payload.trimRollbackUntil;
|
|
@@ -83,12 +165,13 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
83
165
|
return [];
|
|
84
166
|
return rollbackTail.slice(index + 1);
|
|
85
167
|
};
|
|
168
|
+
const updateContext = UpdateContext.make({ payload, syncState });
|
|
86
169
|
switch (payload._tag) {
|
|
87
170
|
case 'upstream-rebase': {
|
|
88
171
|
// Find the index of the rollback event in the rollback tail
|
|
89
172
|
const rollbackIndex = syncState.rollbackTail.findIndex((event) => EventId.isEqual(event.id, payload.rollbackUntil));
|
|
90
173
|
if (rollbackIndex === -1) {
|
|
91
|
-
return
|
|
174
|
+
return unexpectedError(`Rollback event not found in rollback tail. Rollback until: [${payload.rollbackUntil.global},${payload.rollbackUntil.client}]. Rollback tail: [${syncState.rollbackTail.map((e) => e.toString()).join(', ')}]`);
|
|
92
175
|
}
|
|
93
176
|
const eventsToRollback = [...syncState.rollbackTail.slice(rollbackIndex), ...syncState.pending];
|
|
94
177
|
// Get the last new event's ID as the new upstream head
|
|
@@ -99,7 +182,7 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
99
182
|
baseEventId: newUpstreamHead,
|
|
100
183
|
isLocalEvent,
|
|
101
184
|
});
|
|
102
|
-
return {
|
|
185
|
+
return UpdateResultRebase.make({
|
|
103
186
|
_tag: 'rebase',
|
|
104
187
|
newSyncState: new SyncState({
|
|
105
188
|
pending: rebasedPending,
|
|
@@ -107,14 +190,14 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
107
190
|
upstreamHead: newUpstreamHead,
|
|
108
191
|
localHead: rebasedPending.at(-1)?.id ?? newUpstreamHead,
|
|
109
192
|
}),
|
|
110
|
-
|
|
111
|
-
newEvents: payload.newEvents,
|
|
193
|
+
newEvents: [...payload.newEvents, ...rebasedPending],
|
|
112
194
|
eventsToRollback,
|
|
113
|
-
|
|
195
|
+
updateContext,
|
|
196
|
+
});
|
|
114
197
|
}
|
|
115
198
|
case 'upstream-advance': {
|
|
116
199
|
if (payload.newEvents.length === 0) {
|
|
117
|
-
return {
|
|
200
|
+
return UpdateResultAdvance.make({
|
|
118
201
|
_tag: 'advance',
|
|
119
202
|
newSyncState: new SyncState({
|
|
120
203
|
pending: syncState.pending,
|
|
@@ -122,16 +205,20 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
122
205
|
upstreamHead: syncState.upstreamHead,
|
|
123
206
|
localHead: syncState.localHead,
|
|
124
207
|
}),
|
|
125
|
-
previousSyncState: syncState,
|
|
126
208
|
newEvents: [],
|
|
127
|
-
|
|
209
|
+
updateContext,
|
|
210
|
+
});
|
|
128
211
|
}
|
|
129
212
|
// Validate that newEvents are sorted in ascending order by eventId
|
|
130
213
|
for (let i = 1; i < payload.newEvents.length; i++) {
|
|
131
214
|
if (EventId.isGreaterThan(payload.newEvents[i - 1].id, payload.newEvents[i].id)) {
|
|
132
|
-
return
|
|
215
|
+
return unexpectedError(`Events must be sorted in ascending order by eventId. Received: [${payload.newEvents.map((e) => `(${e.id.global},${e.id.client})`).join(', ')}]`);
|
|
133
216
|
}
|
|
134
217
|
}
|
|
218
|
+
// Validate that incoming events are larger than upstream head
|
|
219
|
+
if (EventId.isGreaterThan(syncState.upstreamHead, payload.newEvents[0].id)) {
|
|
220
|
+
return unexpectedError(`Incoming events must be greater than upstream head. Expected greater than: [${syncState.upstreamHead.global},${syncState.upstreamHead.client}]. Received: [${payload.newEvents.map((e) => `(${e.id.global},${e.id.client})`).join(', ')}]`);
|
|
221
|
+
}
|
|
135
222
|
const newUpstreamHead = payload.newEvents.at(-1).id;
|
|
136
223
|
const divergentPendingIndex = findDivergencePoint({
|
|
137
224
|
existingEvents: syncState.pending,
|
|
@@ -169,7 +256,7 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
169
256
|
seenEventIds.add(eventIdStr);
|
|
170
257
|
return true;
|
|
171
258
|
});
|
|
172
|
-
return {
|
|
259
|
+
return UpdateResultAdvance.make({
|
|
173
260
|
_tag: 'advance',
|
|
174
261
|
newSyncState: new SyncState({
|
|
175
262
|
pending: pendingRemaining,
|
|
@@ -177,9 +264,9 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
177
264
|
upstreamHead: newUpstreamHead,
|
|
178
265
|
localHead: pendingRemaining.at(-1)?.id ?? newUpstreamHead,
|
|
179
266
|
}),
|
|
180
|
-
previousSyncState: syncState,
|
|
181
267
|
newEvents,
|
|
182
|
-
|
|
268
|
+
updateContext,
|
|
269
|
+
});
|
|
183
270
|
}
|
|
184
271
|
else {
|
|
185
272
|
const divergentPending = syncState.pending.slice(divergentPendingIndex);
|
|
@@ -195,7 +282,7 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
195
282
|
isLocalEvent,
|
|
196
283
|
ignoreLocalEvents,
|
|
197
284
|
});
|
|
198
|
-
return {
|
|
285
|
+
return UpdateResultRebase.make({
|
|
199
286
|
_tag: 'rebase',
|
|
200
287
|
newSyncState: new SyncState({
|
|
201
288
|
pending: rebasedPending,
|
|
@@ -203,24 +290,33 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
203
290
|
upstreamHead: newUpstreamHead,
|
|
204
291
|
localHead: rebasedPending.at(-1).id,
|
|
205
292
|
}),
|
|
206
|
-
previousSyncState: syncState,
|
|
207
293
|
newEvents: [...payload.newEvents.slice(divergentNewEventsIndex), ...rebasedPending],
|
|
208
294
|
eventsToRollback: [...syncState.rollbackTail, ...divergentPending],
|
|
209
|
-
|
|
295
|
+
updateContext,
|
|
296
|
+
});
|
|
210
297
|
}
|
|
211
298
|
}
|
|
212
299
|
case 'local-push': {
|
|
213
300
|
if (payload.newEvents.length === 0) {
|
|
214
|
-
return {
|
|
301
|
+
return UpdateResultAdvance.make({
|
|
302
|
+
_tag: 'advance',
|
|
303
|
+
newSyncState: syncState,
|
|
304
|
+
newEvents: [],
|
|
305
|
+
updateContext,
|
|
306
|
+
});
|
|
215
307
|
}
|
|
216
308
|
const newEventsFirst = payload.newEvents.at(0);
|
|
217
309
|
const invalidEventId = EventId.isGreaterThan(newEventsFirst.id, syncState.localHead) === false;
|
|
218
310
|
if (invalidEventId) {
|
|
219
311
|
const expectedMinimumId = EventId.nextPair(syncState.localHead, true).id;
|
|
220
|
-
return {
|
|
312
|
+
return UpdateResultReject.make({
|
|
313
|
+
_tag: 'reject',
|
|
314
|
+
expectedMinimumId,
|
|
315
|
+
updateContext,
|
|
316
|
+
});
|
|
221
317
|
}
|
|
222
318
|
else {
|
|
223
|
-
return {
|
|
319
|
+
return UpdateResultAdvance.make({
|
|
224
320
|
_tag: 'advance',
|
|
225
321
|
newSyncState: new SyncState({
|
|
226
322
|
pending: [...syncState.pending, ...payload.newEvents],
|
|
@@ -228,30 +324,14 @@ export const updateSyncState = ({ syncState, payload, isLocalEvent, isEqualEvent
|
|
|
228
324
|
upstreamHead: syncState.upstreamHead,
|
|
229
325
|
localHead: payload.newEvents.at(-1).id,
|
|
230
326
|
}),
|
|
231
|
-
previousSyncState: syncState,
|
|
232
327
|
newEvents: payload.newEvents,
|
|
233
|
-
|
|
328
|
+
updateContext,
|
|
329
|
+
});
|
|
234
330
|
}
|
|
235
331
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
// if (startIndex === -1) {
|
|
240
|
-
// return shouldNeverHappen('New rollback start event not found in rollback tail')
|
|
241
|
-
// }
|
|
242
|
-
// // Keep only the events from the start index onwards
|
|
243
|
-
// const newRollbackTail = syncState.rollbackTail.slice(startIndex)
|
|
244
|
-
// return {
|
|
245
|
-
// _tag: 'advance',
|
|
246
|
-
// syncState: {
|
|
247
|
-
// pending: syncState.pending,
|
|
248
|
-
// rollbackTail: newRollbackTail,
|
|
249
|
-
// upstreamHead: syncState.upstreamHead,
|
|
250
|
-
// localHead: syncState.localHead,
|
|
251
|
-
// },
|
|
252
|
-
// newEvents: [],
|
|
253
|
-
// }
|
|
254
|
-
// }
|
|
332
|
+
default: {
|
|
333
|
+
casesHandled(payload);
|
|
334
|
+
}
|
|
255
335
|
}
|
|
256
336
|
};
|
|
257
337
|
/**
|
|
@@ -289,4 +369,12 @@ const rebaseEvents = ({ events, baseEventId, isLocalEvent, }) => {
|
|
|
289
369
|
return newEvent;
|
|
290
370
|
});
|
|
291
371
|
};
|
|
372
|
+
/**
|
|
373
|
+
* TODO: Implement this
|
|
374
|
+
*
|
|
375
|
+
* In certain scenarios e.g. when the client session has a queue of upstream update results,
|
|
376
|
+
* it could make sense to "flatten" update results into a single update result which the client session
|
|
377
|
+
* can process more efficiently which avoids push-threshing
|
|
378
|
+
*/
|
|
379
|
+
const _flattenUpdateResults = (_updateResults) => { };
|
|
292
380
|
//# sourceMappingURL=syncstate.js.map
|
|
@@ -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;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,KAAK,CAAY,WAAW,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;IACzD,YAAY,EAAE,OAAO,CAAC,OAAO;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO;CAC3B,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACtD,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG;YACzE,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG;SACjE,CAAA;IACH,CAAC,CAAA;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;IAChF,8GAA8G;IAC9G,aAAa,EAAE,OAAO,CAAC,OAAO;IAC9B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;IACtD,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;CACpD,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;IAClF,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;IACtD,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;CACpD,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;IACtE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;CACvD,CAAC;CAAG;AAEL,MAAM,OAAO,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;CAAG;AAE7G,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;AA8B1F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,iBAAiB,GAAG,KAAK,GAQ1B,EAAgB,EAAE;IACjB,MAAM,gBAAgB,GAAG,CACvB,YAA0D,EACZ,EAAE;QAChD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAA;QAC/F,IAAI,iBAAiB,KAAK,SAAS;YAAE,OAAO,YAAY,CAAA;QACxD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAC7F,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAA;QAC3B,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,4DAA4D;YAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,CACjD,CAAA;YACD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,OAAO,iBAAiB,CACtB,+DAA+D,OAAO,CAAC,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,sBAAsB,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC/M,CAAA;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YAE/F,uDAAuD;YACvD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,YAAY,CAAA;YAE9E,iDAAiD;YACjD,MAAM,cAAc,GAAG,YAAY,CAAC;gBAClC,MAAM,EAAE,SAAS,CAAC,OAAO;gBACzB,WAAW,EAAE,eAAe;gBAC5B,YAAY;aACb,CAAC,CAAA;YAEF,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,IAAI,SAAS,CAAC;oBAC1B,OAAO,EAAE,cAAc;oBACvB,YAAY,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;oBACzG,YAAY,EAAE,eAAe;oBAC7B,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,eAAe;iBACxD,CAAC;gBACF,iBAAiB,EAAE,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,gBAAgB;aACjB,CAAA;QACH,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;wBACtD,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,SAAS,EAAE,SAAS,CAAC,SAAS;qBAC/B,CAAC;oBACF,iBAAiB,EAAE,SAAS;oBAC5B,SAAS,EAAE,EAAE;iBACd,CAAA;YACH,CAAC;YAED,mEAAmE;YACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClF,OAAO,iBAAiB,CAAC,qDAAqD,CAAC,CAAA;gBACjF,CAAC;YACH,CAAC;YAED,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAA;YAEpD,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;gBAChD,cAAc,EAAE,SAAS,CAAC,OAAO;gBACjC,cAAc,EAAE,OAAO,CAAC,SAAS;gBACjC,YAAY;gBACZ,YAAY;gBACZ,iBAAiB;aAClB,CAAC,CAAA;YAEF,IAAI,qBAAqB,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;gBAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;gBAExG,4EAA4E;gBAC5E,uDAAuD;gBACvD,yFAAyF;gBACzF,8FAA8F;gBAC9F,wFAAwF;gBACxF,IAAI,gBAAgB,GAAG,CAAC,CAAA;gBACxB,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,aAAa,CAAC,UAAU,CAClE,SAAS,CAAC,OAAO,EACjB,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;oBACtB,IAAI,iBAAiB,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;wBACpD,gBAAgB,EAAE,CAAA;wBAClB,OAAO,KAAK,CAAA;oBACd,CAAC;oBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAA;oBAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,OAAO,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,CAAA;gBACvD,CAAC,CACF,CAAA;gBAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;gBACtC,MAAM,mBAAmB,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;oBACtF,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAA;oBAC1D,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjC,OAAO,KAAK,CAAA;oBACd,CAAC;oBACD,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;oBAC5B,OAAO,IAAI,CAAA;gBACb,CAAC,CAAC,CAAA;gBAEF,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,gBAAgB;wBACzB,YAAY,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,mBAAmB,CAAC,CAAC;wBACnF,YAAY,EAAE,eAAe;wBAC7B,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,eAAe;qBAC1D,CAAC;oBACF,iBAAiB,EAAE,SAAS;oBAC5B,SAAS;iBACV,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBACvE,MAAM,cAAc,GAAG,YAAY,CAAC;oBAClC,MAAM,EAAE,gBAAgB;oBACxB,WAAW,EAAE,eAAe;oBAC5B,YAAY;iBACb,CAAC,CAAA;gBAEF,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;oBAClD,cAAc,EAAE,OAAO,CAAC,SAAS;oBACjC,cAAc,EAAE,SAAS,CAAC,OAAO;oBACjC,YAAY;oBACZ,YAAY;oBACZ,iBAAiB;iBAClB,CAAC,CAAA;gBAEF,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,cAAc;wBACvB,YAAY,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;wBACjF,YAAY,EAAE,eAAe;wBAC7B,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE;qBACrC,CAAC;oBACF,iBAAiB,EAAE,SAAS;oBAC5B,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,GAAG,cAAc,CAAC;oBACnF,gBAAgB,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,gBAAgB,CAAC;iBACnE,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;YAClG,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;YAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,KAAK,CAAA;YAE9F,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;gBACxE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAA;YAC5E,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI,SAAS,CAAC;wBAC1B,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;wBACrD,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE;qBACxC,CAAC;oBACF,iBAAiB,EAAE,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAA;YACH,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,qEAAqE;QACrE,uHAAuH;QACvH,6BAA6B;QAC7B,sFAAsF;QACtF,MAAM;QAEN,yDAAyD;QACzD,qEAAqE;QAErE,aAAa;QACb,uBAAuB;QACvB,mBAAmB;QACnB,oCAAoC;QACpC,uCAAuC;QACvC,8CAA8C;QAC9C,wCAAwC;QACxC,SAAS;QACT,qBAAqB;QACrB,MAAM;QACN,IAAI;IACN,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAAC,EAC3B,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,iBAAiB,GAOlB,EAAU,EAAE;IACX,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QACrF,MAAM,iCAAiC,GAAG,mBAAmB,CAAC;YAC5D,cAAc,EAAE,sBAAsB;YACtC,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAA;QAEF,IAAI,iCAAiC,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAA;QAEvD,MAAM,sBAAsB,GAAG,cAAc,CAAC,iCAAiC,CAAE,CAAC,EAAE,CAAA;QACpF,sDAAsD;QACtD,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAC3C,uEAAuE;QACvE,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,EACpB,MAAM,EACN,WAAW,EACX,YAAY,GAKb,EAAgD,EAAE;IACjD,IAAI,WAAW,GAAG,WAAW,CAAA;IAC7B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACnD,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAA;QACzB,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"syncstate.js","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@ class TestEvent extends MutationEvent.EncodedWithMeta {
|
|
|
12
12
|
parentId: EventId.make(parentId),
|
|
13
13
|
mutation: 'a',
|
|
14
14
|
args: payload,
|
|
15
|
-
meta: {},
|
|
16
15
|
clientId: 'static-local-id',
|
|
17
16
|
sessionId: undefined,
|
|
18
17
|
});
|
|
@@ -65,7 +64,7 @@ describe('syncstate', () => {
|
|
|
65
64
|
}
|
|
66
65
|
expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_1.id);
|
|
67
66
|
expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
|
|
68
|
-
expectEventArraysEqual(result.newEvents, [e_0_0_e_1_0, e_0_1_e_1_1]);
|
|
67
|
+
expectEventArraysEqual(result.newEvents, [e_0_0_e_1_0, e_0_1_e_1_1, e_1_0_e_2_0]);
|
|
69
68
|
expectEventArraysEqual(result.eventsToRollback, [e_0_0, e_0_1, e_1_0]);
|
|
70
69
|
});
|
|
71
70
|
it('should rollback only to specified point', () => {
|
|
@@ -96,7 +95,7 @@ describe('syncstate', () => {
|
|
|
96
95
|
}
|
|
97
96
|
expect(result.newSyncState.upstreamHead).toMatchObject(e_0_1_e_1_0.id);
|
|
98
97
|
expect(result.newSyncState.localHead).toMatchObject(e_1_0_e_2_0.id);
|
|
99
|
-
expectEventArraysEqual(result.newEvents, [e_0_1_e_1_0]);
|
|
98
|
+
expectEventArraysEqual(result.newEvents, [e_0_1_e_1_0, e_1_0_e_2_0]);
|
|
100
99
|
expectEventArraysEqual(result.eventsToRollback, [e_0_1, e_1_0]);
|
|
101
100
|
});
|
|
102
101
|
it('should work for empty pending', () => {
|
|
@@ -124,10 +123,11 @@ describe('syncstate', () => {
|
|
|
124
123
|
upstreamHead: EventId.ROOT,
|
|
125
124
|
localHead: e_0_0.id,
|
|
126
125
|
});
|
|
127
|
-
|
|
126
|
+
const result = run({
|
|
128
127
|
syncState,
|
|
129
128
|
payload: { _tag: 'upstream-rebase', rollbackUntil: e_0_0.id, newEvents: [e_1_0] },
|
|
130
|
-
})
|
|
129
|
+
});
|
|
130
|
+
expect(result).toMatchObject({ _tag: 'unexpected-error' });
|
|
131
131
|
});
|
|
132
132
|
it('should work for empty incoming', () => {
|
|
133
133
|
const syncState = new SyncState.SyncState({
|
|
@@ -156,7 +156,8 @@ describe('syncstate', () => {
|
|
|
156
156
|
upstreamHead: EventId.ROOT,
|
|
157
157
|
localHead: e_0_0.id,
|
|
158
158
|
});
|
|
159
|
-
|
|
159
|
+
const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_1, e_0_0] } });
|
|
160
|
+
expect(result).toMatchObject({ _tag: 'unexpected-error' });
|
|
160
161
|
});
|
|
161
162
|
it('should throw error if newEvents are not sorted in ascending order by eventId (global)', () => {
|
|
162
163
|
const syncState = new SyncState.SyncState({
|
|
@@ -165,7 +166,8 @@ describe('syncstate', () => {
|
|
|
165
166
|
upstreamHead: EventId.ROOT,
|
|
166
167
|
localHead: e_0_0.id,
|
|
167
168
|
});
|
|
168
|
-
|
|
169
|
+
const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_1_0, e_0_0] } });
|
|
170
|
+
expect(result).toMatchObject({ _tag: 'unexpected-error' });
|
|
169
171
|
});
|
|
170
172
|
it('should acknowledge pending event when receiving matching event', () => {
|
|
171
173
|
const syncState = new SyncState.SyncState({
|
|
@@ -287,6 +289,16 @@ describe('syncstate', () => {
|
|
|
287
289
|
expect(result.newSyncState.localHead).toMatchObject(e_1_0.id);
|
|
288
290
|
expect(result.newEvents).toStrictEqual([e_1_0]);
|
|
289
291
|
});
|
|
292
|
+
it('should fail if incoming event is ≤ local head', () => {
|
|
293
|
+
const syncState = new SyncState.SyncState({
|
|
294
|
+
pending: [],
|
|
295
|
+
rollbackTail: [],
|
|
296
|
+
upstreamHead: e_1_0.id,
|
|
297
|
+
localHead: e_1_0.id,
|
|
298
|
+
});
|
|
299
|
+
const result = run({ syncState, payload: { _tag: 'upstream-advance', newEvents: [e_0_0] } });
|
|
300
|
+
expect(result).toMatchObject({ _tag: 'unexpected-error' });
|
|
301
|
+
});
|
|
290
302
|
});
|
|
291
303
|
describe('upstream-advance: rebase', () => {
|
|
292
304
|
it('should rebase single client event to end', () => {
|