@livestore/common 0.2.0 → 0.3.0-dev.1
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/__tests__/fixture.d.ts +163 -1
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/__tests__/fixture.js +3 -1
- package/dist/__tests__/fixture.js.map +1 -1
- package/dist/adapter-types.d.ts +53 -38
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +5 -7
- package/dist/adapter-types.js.map +1 -1
- package/dist/bounded-collections.d.ts +2 -2
- package/dist/bounded-collections.d.ts.map +1 -1
- package/dist/debug-info.d.ts +13 -13
- package/dist/derived-mutations.d.ts +1 -1
- package/dist/derived-mutations.d.ts.map +1 -1
- package/dist/devtools/devtools-bridge.d.ts +2 -2
- package/dist/devtools/devtools-bridge.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.d.ts +84 -196
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +55 -61
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +1 -2
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/init-singleton-tables.d.ts +1 -1
- package/dist/init-singleton-tables.d.ts.map +1 -1
- package/dist/leader-thread/apply-mutation.d.ts +8 -0
- package/dist/leader-thread/apply-mutation.d.ts.map +1 -0
- package/dist/leader-thread/apply-mutation.js +95 -0
- package/dist/leader-thread/apply-mutation.js.map +1 -0
- package/dist/leader-thread/connection.d.ts +11 -0
- package/dist/leader-thread/connection.d.ts.map +1 -0
- package/dist/leader-thread/connection.js +44 -0
- package/dist/leader-thread/connection.js.map +1 -0
- package/dist/leader-thread/leader-sync-processor.d.ts +47 -0
- package/dist/leader-thread/leader-sync-processor.d.ts.map +1 -0
- package/dist/leader-thread/leader-sync-processor.js +422 -0
- package/dist/leader-thread/leader-sync-processor.js.map +1 -0
- package/dist/leader-thread/leader-worker-devtools.d.ts +6 -0
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -0
- package/dist/leader-thread/leader-worker-devtools.js +216 -0
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.d.ts +20 -0
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.js +106 -0
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -0
- package/dist/leader-thread/mod.d.ts +7 -0
- package/dist/leader-thread/mod.d.ts.map +1 -0
- package/dist/leader-thread/mod.js +7 -0
- package/dist/leader-thread/mod.js.map +1 -0
- package/dist/leader-thread/mutationlog.d.ts +23 -0
- package/dist/leader-thread/mutationlog.d.ts.map +1 -0
- package/dist/leader-thread/mutationlog.js +27 -0
- package/dist/leader-thread/mutationlog.js.map +1 -0
- package/dist/leader-thread/pull-queue-set.d.ts +7 -0
- package/dist/leader-thread/pull-queue-set.d.ts.map +1 -0
- package/dist/leader-thread/pull-queue-set.js +39 -0
- package/dist/leader-thread/pull-queue-set.js.map +1 -0
- package/dist/leader-thread/recreate-db.d.ts +7 -0
- package/dist/leader-thread/recreate-db.d.ts.map +1 -0
- package/dist/leader-thread/recreate-db.js +69 -0
- package/dist/leader-thread/recreate-db.js.map +1 -0
- package/dist/leader-thread/shutdown-channel.d.ts +15 -0
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -0
- package/dist/leader-thread/shutdown-channel.js +7 -0
- package/dist/leader-thread/shutdown-channel.js.map +1 -0
- package/dist/leader-thread/types.d.ts +87 -0
- package/dist/leader-thread/types.d.ts.map +1 -0
- package/dist/leader-thread/types.js +11 -0
- package/dist/leader-thread/types.js.map +1 -0
- package/dist/mutation.d.ts +3 -4
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +0 -14
- package/dist/mutation.js.map +1 -1
- package/dist/otel.d.ts +7 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +11 -0
- package/dist/otel.js.map +1 -0
- package/dist/query-builder/api.d.ts +2 -2
- package/dist/query-builder/api.d.ts.map +1 -1
- package/dist/query-builder/api.js.map +1 -1
- package/dist/query-builder/impl.d.ts +1 -1
- package/dist/query-builder/impl.d.ts.map +1 -1
- package/dist/query-builder/impl.js +21 -4
- package/dist/query-builder/impl.js.map +1 -1
- package/dist/query-builder/impl.test.js +24 -1
- package/dist/query-builder/impl.test.js.map +1 -1
- package/dist/query-info.d.ts +1 -1
- package/dist/query-info.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +6 -6
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/EventId.d.ts +37 -0
- package/dist/schema/EventId.d.ts.map +1 -0
- package/dist/schema/EventId.js +30 -0
- package/dist/schema/EventId.js.map +1 -0
- package/dist/schema/MutationEvent.d.ts +191 -0
- package/dist/schema/MutationEvent.d.ts.map +1 -0
- package/dist/schema/MutationEvent.js +56 -0
- package/dist/schema/MutationEvent.js.map +1 -0
- package/dist/schema/mod.d.ts +8 -0
- package/dist/schema/mod.d.ts.map +1 -0
- package/dist/schema/mod.js +8 -0
- package/dist/schema/mod.js.map +1 -0
- package/dist/schema/mutations.d.ts +3 -123
- package/dist/schema/mutations.d.ts.map +1 -1
- package/dist/schema/mutations.js +0 -26
- package/dist/schema/mutations.js.map +1 -1
- package/dist/schema/{index.d.ts → schema.d.ts} +1 -5
- package/dist/schema/schema.d.ts.map +1 -0
- package/dist/schema/{index.js → schema.js} +1 -5
- package/dist/schema/schema.js.map +1 -0
- package/dist/schema/system-tables.d.ts +55 -29
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +10 -5
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +1 -1
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +6 -1
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/validate-mutation-defs.d.ts +1 -1
- package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
- package/dist/sync/client-session-sync-processor.d.ts +45 -0
- package/dist/sync/client-session-sync-processor.d.ts.map +1 -0
- package/dist/sync/client-session-sync-processor.js +131 -0
- package/dist/sync/client-session-sync-processor.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/next/compact-events.d.ts +1 -1
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/compact-events.js +2 -1
- package/dist/sync/next/compact-events.js.map +1 -1
- package/dist/sync/next/facts.d.ts +5 -5
- package/dist/sync/next/facts.d.ts.map +1 -1
- package/dist/sync/next/facts.js +1 -1
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +30 -0
- package/dist/sync/next/history-dag-common.d.ts.map +1 -0
- package/dist/sync/next/history-dag-common.js +20 -0
- package/dist/sync/next/history-dag-common.js.map +1 -0
- package/dist/sync/next/history-dag.d.ts +4 -27
- package/dist/sync/next/history-dag.d.ts.map +1 -1
- package/dist/sync/next/history-dag.js +1 -19
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/next/mod.d.ts +1 -0
- package/dist/sync/next/mod.d.ts.map +1 -1
- package/dist/sync/next/mod.js +1 -0
- package/dist/sync/next/mod.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +3 -2
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
- package/dist/sync/next/test/compact-events.test.js +2 -1
- package/dist/sync/next/test/compact-events.test.js.map +1 -1
- package/dist/sync/next/test/mutation-fixtures.d.ts +1 -1
- package/dist/sync/next/test/mutation-fixtures.d.ts.map +1 -1
- package/dist/sync/next/test/mutation-fixtures.js +4 -3
- package/dist/sync/next/test/mutation-fixtures.js.map +1 -1
- package/dist/sync/sync.d.ts +33 -12
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +10 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +123 -0
- package/dist/sync/syncstate.d.ts.map +1 -0
- package/dist/sync/syncstate.js +248 -0
- package/dist/sync/syncstate.js.map +1 -0
- package/dist/sync/syncstate.test.d.ts +2 -0
- package/dist/sync/syncstate.test.d.ts.map +1 -0
- package/dist/sync/syncstate.test.js +399 -0
- package/dist/sync/syncstate.test.js.map +1 -0
- package/dist/sync/validate-push-payload.d.ts +5 -0
- package/dist/sync/validate-push-payload.d.ts.map +1 -0
- package/dist/sync/validate-push-payload.js +15 -0
- package/dist/sync/validate-push-payload.js.map +1 -0
- package/dist/util.d.ts +2 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/package.json +13 -6
- package/src/__tests__/fixture.ts +5 -1
- package/src/adapter-types.ts +60 -34
- package/src/derived-mutations.test.ts +1 -1
- package/src/derived-mutations.ts +1 -1
- package/src/devtools/devtools-bridge.ts +2 -2
- package/src/devtools/devtools-messages.ts +70 -74
- package/src/devtools/index.ts +1 -2
- package/src/index.ts +2 -1
- package/src/init-singleton-tables.ts +1 -1
- package/src/leader-thread/apply-mutation.ts +143 -0
- package/src/leader-thread/connection.ts +67 -0
- package/src/leader-thread/leader-sync-processor.ts +666 -0
- package/src/leader-thread/leader-worker-devtools.ts +358 -0
- package/src/leader-thread/make-leader-thread-layer.ts +192 -0
- package/src/leader-thread/mod.ts +6 -0
- package/src/leader-thread/mutationlog.ts +42 -0
- package/src/leader-thread/pull-queue-set.ts +58 -0
- package/src/leader-thread/recreate-db.ts +109 -0
- package/src/leader-thread/shutdown-channel.ts +13 -0
- package/src/leader-thread/types.ts +129 -0
- package/src/mutation.ts +3 -21
- package/src/otel.ts +20 -0
- package/src/query-builder/api.ts +3 -2
- package/src/query-builder/impl.test.ts +28 -1
- package/src/query-builder/impl.ts +21 -5
- package/src/query-info.ts +1 -1
- package/src/rehydrate-from-mutationlog.ts +7 -11
- package/src/schema/EventId.ts +46 -0
- package/src/schema/MutationEvent.ts +161 -0
- package/src/schema/mod.ts +7 -0
- package/src/schema/mutations.ts +5 -126
- package/src/schema/{index.ts → schema.ts} +0 -5
- package/src/schema/system-tables.ts +18 -5
- package/src/schema-management/migrations.ts +9 -2
- package/src/schema-management/validate-mutation-defs.ts +1 -1
- package/src/sync/client-session-sync-processor.ts +207 -0
- package/src/sync/index.ts +2 -0
- package/src/sync/next/compact-events.ts +3 -2
- package/src/sync/next/facts.ts +11 -5
- package/src/sync/next/history-dag-common.ts +44 -0
- package/src/sync/next/history-dag.ts +3 -45
- package/src/sync/next/mod.ts +1 -0
- package/src/sync/next/rebase-events.ts +6 -5
- package/src/sync/next/test/compact-events.test.ts +3 -2
- package/src/sync/next/test/mutation-fixtures.ts +7 -6
- package/src/sync/sync.ts +32 -12
- package/src/sync/syncstate.test.ts +464 -0
- package/src/sync/syncstate.ts +385 -0
- package/src/sync/validate-push-payload.ts +18 -0
- package/src/version.ts +2 -2
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js.map +0 -1
- package/dist/sync/next-mutation-event-id-pair.d.ts +0 -14
- package/dist/sync/next-mutation-event-id-pair.d.ts.map +0 -1
- package/dist/sync/next-mutation-event-id-pair.js +0 -13
- package/dist/sync/next-mutation-event-id-pair.js.map +0 -1
- package/src/sync/next-mutation-event-id-pair.ts +0 -20
@@ -102,22 +102,29 @@ export declare const sessionChangesetMetaTable: import("./table-def.js").TableDe
|
|
102
102
|
schema: Schema.Schema<number, number, never>;
|
103
103
|
default: import("effect/Option").None<never>;
|
104
104
|
nullable: false;
|
105
|
-
primaryKey:
|
105
|
+
primaryKey: false;
|
106
106
|
};
|
107
107
|
idLocal: {
|
108
108
|
columnType: "integer";
|
109
109
|
schema: Schema.Schema<number, number, never>;
|
110
110
|
default: import("effect/Option").None<never>;
|
111
111
|
nullable: false;
|
112
|
-
primaryKey:
|
112
|
+
primaryKey: false;
|
113
113
|
};
|
114
114
|
changeset: {
|
115
115
|
columnType: "blob";
|
116
|
-
schema: Schema.Schema<Uint8Array
|
116
|
+
schema: Schema.Schema<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>;
|
117
117
|
default: import("effect/Option").None<never>;
|
118
118
|
nullable: false;
|
119
119
|
primaryKey: false;
|
120
120
|
};
|
121
|
+
debug: {
|
122
|
+
columnType: "text";
|
123
|
+
schema: Schema.Schema<unknown, string | null, never>;
|
124
|
+
default: import("effect/Option").Some<any> | import("effect/Option").None<never>;
|
125
|
+
nullable: true;
|
126
|
+
primaryKey: false;
|
127
|
+
};
|
121
128
|
};
|
122
129
|
indexes?: ReadonlyArray<SqliteDsl.Index>;
|
123
130
|
ast: __SqliteAst.Table;
|
@@ -130,11 +137,13 @@ export declare const sessionChangesetMetaTable: import("./table-def.js").TableDe
|
|
130
137
|
}, Schema.Schema<{
|
131
138
|
readonly idGlobal: number;
|
132
139
|
readonly idLocal: number;
|
133
|
-
readonly changeset: Uint8Array
|
140
|
+
readonly changeset: Uint8Array<ArrayBufferLike>;
|
141
|
+
readonly debug: unknown;
|
134
142
|
}, {
|
135
143
|
readonly idGlobal: number;
|
136
144
|
readonly idLocal: number;
|
137
|
-
readonly changeset: Uint8Array
|
145
|
+
readonly changeset: Uint8Array<ArrayBufferLike>;
|
146
|
+
readonly debug: string | null;
|
138
147
|
}, never>>;
|
139
148
|
export type SessionChangesetMetaRow = FromTable.RowDecoded<typeof sessionChangesetMetaTable>;
|
140
149
|
export declare const systemTables: (import("./table-def.js").TableDef<{
|
@@ -227,22 +236,29 @@ export declare const systemTables: (import("./table-def.js").TableDef<{
|
|
227
236
|
schema: Schema.Schema<number, number, never>;
|
228
237
|
default: import("effect/Option").None<never>;
|
229
238
|
nullable: false;
|
230
|
-
primaryKey:
|
239
|
+
primaryKey: false;
|
231
240
|
};
|
232
241
|
idLocal: {
|
233
242
|
columnType: "integer";
|
234
243
|
schema: Schema.Schema<number, number, never>;
|
235
244
|
default: import("effect/Option").None<never>;
|
236
245
|
nullable: false;
|
237
|
-
primaryKey:
|
246
|
+
primaryKey: false;
|
238
247
|
};
|
239
248
|
changeset: {
|
240
249
|
columnType: "blob";
|
241
|
-
schema: Schema.Schema<Uint8Array
|
250
|
+
schema: Schema.Schema<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>;
|
242
251
|
default: import("effect/Option").None<never>;
|
243
252
|
nullable: false;
|
244
253
|
primaryKey: false;
|
245
254
|
};
|
255
|
+
debug: {
|
256
|
+
columnType: "text";
|
257
|
+
schema: Schema.Schema<unknown, string | null, never>;
|
258
|
+
default: import("effect/Option").Some<any> | import("effect/Option").None<never>;
|
259
|
+
nullable: true;
|
260
|
+
primaryKey: false;
|
261
|
+
};
|
246
262
|
};
|
247
263
|
indexes?: ReadonlyArray<SqliteDsl.Index>;
|
248
264
|
ast: __SqliteAst.Table;
|
@@ -255,11 +271,13 @@ export declare const systemTables: (import("./table-def.js").TableDef<{
|
|
255
271
|
}, Schema.Schema<{
|
256
272
|
readonly idGlobal: number;
|
257
273
|
readonly idLocal: number;
|
258
|
-
readonly changeset: Uint8Array
|
274
|
+
readonly changeset: Uint8Array<ArrayBufferLike>;
|
275
|
+
readonly debug: unknown;
|
259
276
|
}, {
|
260
277
|
readonly idGlobal: number;
|
261
278
|
readonly idLocal: number;
|
262
|
-
readonly changeset: Uint8Array
|
279
|
+
readonly changeset: Uint8Array<ArrayBufferLike>;
|
280
|
+
readonly debug: string | null;
|
263
281
|
}, never>>)[];
|
264
282
|
export declare const SyncStatus: Schema.Literal<["synced", "pending", "error", "localOnly"]>;
|
265
283
|
export type SyncStatus = typeof SyncStatus.Type;
|
@@ -316,20 +334,6 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<{
|
|
316
334
|
nullable: false;
|
317
335
|
primaryKey: false;
|
318
336
|
};
|
319
|
-
createdAt: {
|
320
|
-
columnType: "text";
|
321
|
-
schema: Schema.Schema<string, string, never>;
|
322
|
-
default: import("effect/Option").None<never>;
|
323
|
-
nullable: false;
|
324
|
-
primaryKey: false;
|
325
|
-
};
|
326
|
-
syncStatus: {
|
327
|
-
columnType: "text";
|
328
|
-
schema: Schema.Schema<"localOnly" | "synced" | "pending" | "error", "localOnly" | "synced" | "pending" | "error", never>;
|
329
|
-
default: import("effect/Option").None<never>;
|
330
|
-
nullable: false;
|
331
|
-
primaryKey: false;
|
332
|
-
};
|
333
337
|
syncMetadataJson: {
|
334
338
|
columnType: "text";
|
335
339
|
schema: Schema.Schema<import("effect/Option").Option<Schema.JsonValue>, string, never>;
|
@@ -345,7 +349,7 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<{
|
|
345
349
|
disableAutomaticIdColumn: true;
|
346
350
|
deriveMutations: never;
|
347
351
|
isSingleColumn: false;
|
348
|
-
requiredInsertColumnNames: "schemaHash" | "idGlobal" | "idLocal" | "parentIdGlobal" | "parentIdLocal" | "mutation" | "argsJson" | "
|
352
|
+
requiredInsertColumnNames: "schemaHash" | "idGlobal" | "idLocal" | "parentIdGlobal" | "parentIdLocal" | "mutation" | "argsJson" | "syncMetadataJson";
|
349
353
|
}, Schema.Schema<{
|
350
354
|
readonly idGlobal: number;
|
351
355
|
readonly idLocal: number;
|
@@ -354,8 +358,6 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<{
|
|
354
358
|
readonly mutation: string;
|
355
359
|
readonly argsJson: any;
|
356
360
|
readonly schemaHash: number;
|
357
|
-
readonly createdAt: string;
|
358
|
-
readonly syncStatus: "localOnly" | "synced" | "pending" | "error";
|
359
361
|
readonly syncMetadataJson: import("effect/Option").Option<Schema.JsonValue>;
|
360
362
|
}, {
|
361
363
|
readonly idGlobal: number;
|
@@ -365,9 +367,33 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<{
|
|
365
367
|
readonly mutation: string;
|
366
368
|
readonly argsJson: string;
|
367
369
|
readonly schemaHash: number;
|
368
|
-
readonly createdAt: string;
|
369
|
-
readonly syncStatus: "localOnly" | "synced" | "pending" | "error";
|
370
370
|
readonly syncMetadataJson: string;
|
371
371
|
}, never>>;
|
372
372
|
export type MutationLogMetaRow = FromTable.RowDecoded<typeof mutationLogMetaTable>;
|
373
|
+
export declare const SYNC_STATUS_TABLE = "__livestore_sync_status";
|
374
|
+
export declare const syncStatusTable: import("./table-def.js").TableDef<{
|
375
|
+
name: "__livestore_sync_status";
|
376
|
+
columns: {
|
377
|
+
head: {
|
378
|
+
columnType: "integer";
|
379
|
+
schema: Schema.Schema<number, number, never>;
|
380
|
+
default: import("effect/Option").None<never>;
|
381
|
+
nullable: false;
|
382
|
+
primaryKey: true;
|
383
|
+
};
|
384
|
+
};
|
385
|
+
indexes?: ReadonlyArray<SqliteDsl.Index>;
|
386
|
+
ast: __SqliteAst.Table;
|
387
|
+
}, {
|
388
|
+
isSingleton: false;
|
389
|
+
disableAutomaticIdColumn: true;
|
390
|
+
deriveMutations: never;
|
391
|
+
isSingleColumn: false;
|
392
|
+
requiredInsertColumnNames: "head";
|
393
|
+
}, Schema.Schema<{
|
394
|
+
readonly head: number;
|
395
|
+
}, {
|
396
|
+
readonly head: number;
|
397
|
+
}, never>>;
|
398
|
+
export type SyncStatusRow = FromTable.RowDecoded<typeof syncStatusTable>;
|
373
399
|
//# sourceMappingURL=system-tables.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAS3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,2BAA2B,iCAAiC,CAAA;AAEzE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UASpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE1F;;;GAGG;AACH,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,yBAAyB
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAS3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,2BAA2B,iCAAiC,CAAA;AAEzE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UASpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE1F;;;GAGG;AACH,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAYrC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE5F,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAyE,CAAA;AAIlG,eAAO,MAAM,UAAU,6DAA4D,CAAA;AACnF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AAErD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAahC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAElF,eAAO,MAAM,iBAAiB,4BAA4B,CAAA;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;UAM3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
@@ -22,9 +22,13 @@ export const schemaMutationsMetaTable = table(SCHEMA_MUTATIONS_META_TABLE, {
|
|
22
22
|
*/
|
23
23
|
export const SESSION_CHANGESET_META_TABLE = '__livestore_session_changeset';
|
24
24
|
export const sessionChangesetMetaTable = table(SESSION_CHANGESET_META_TABLE, {
|
25
|
-
|
26
|
-
|
25
|
+
// TODO bring back primary key
|
26
|
+
idGlobal: SqliteDsl.integer({}),
|
27
|
+
idLocal: SqliteDsl.integer({}),
|
28
|
+
// idGlobal: SqliteDsl.integer({ primaryKey: true }),
|
29
|
+
// idLocal: SqliteDsl.integer({ primaryKey: true }),
|
27
30
|
changeset: SqliteDsl.blob({}),
|
31
|
+
debug: SqliteDsl.json({ nullable: true }),
|
28
32
|
}, { disableAutomaticIdColumn: true });
|
29
33
|
export const systemTables = [schemaMetaTable, schemaMutationsMetaTable, sessionChangesetMetaTable];
|
30
34
|
/// Mutation log DB
|
@@ -38,9 +42,10 @@ export const mutationLogMetaTable = table(MUTATION_LOG_META_TABLE, {
|
|
38
42
|
mutation: SqliteDsl.text({}),
|
39
43
|
argsJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Any) }),
|
40
44
|
schemaHash: SqliteDsl.integer({}),
|
41
|
-
/** ISO date format */
|
42
|
-
createdAt: SqliteDsl.text({}),
|
43
|
-
syncStatus: SqliteDsl.text({ schema: SyncStatus }),
|
44
45
|
syncMetadataJson: SqliteDsl.text({ schema: Schema.parseJson(Schema.Option(Schema.JsonValue)) }),
|
45
46
|
}, { disableAutomaticIdColumn: true, indexes: [] });
|
47
|
+
export const SYNC_STATUS_TABLE = '__livestore_sync_status';
|
48
|
+
export const syncStatusTable = table(SYNC_STATUS_TABLE, {
|
49
|
+
head: SqliteDsl.integer({ primaryKey: true }),
|
50
|
+
}, { disableAutomaticIdColumn: true });
|
46
51
|
//# sourceMappingURL=system-tables.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,UAAU;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAClC,iBAAiB,EACjB;IACE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC/C,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA;AAID,MAAM,CAAC,MAAM,2BAA2B,GAAG,8BAA8B,CAAA;AAEzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAC3C,2BAA2B,EAC3B;IACE,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAClD,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC/C,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA;AAID;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,+BAA+B,CAAA;AAE3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAC5C,4BAA4B,EAC5B;IACE,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,
|
1
|
+
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { SqliteAst } from '@livestore/db-schema';
|
2
2
|
import { Effect } from '@livestore/utils/effect';
|
3
3
|
import type { SynchronousDatabase } from '../adapter-types.js';
|
4
|
-
import type { LiveStoreSchema } from '../schema/
|
4
|
+
import type { LiveStoreSchema } from '../schema/mod.js';
|
5
5
|
import type { SchemaManager } from './common.js';
|
6
6
|
export declare const makeSchemaManager: (db: SynchronousDatabase) => Effect.Effect<SchemaManager>;
|
7
7
|
export declare const migrateDb: ({ db, schema, onProgress, }: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAUvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,OAAQ,mBAAmB,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAwBnF,CAAA;AAGJ,eAAO,MAAM,SAAS,gCAInB;IACD,EAAE,EAAE,mBAAmB,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC5E,8EAqDG,CAAA;AAEJ,eAAO,MAAM,YAAY,4DAMtB;IACD,EAAE,EAAE,mBAAmB,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,sCAqCE,CAAA;AAOH,eAAO,MAAM,cAAc,aAAc,SAAS,CAAC,KAAK,WAQvD,CAAA"}
|
@@ -83,7 +83,12 @@ export const migrateTable = ({ db, tableAst, schemaHash = SqliteAst.hash(tableAs
|
|
83
83
|
ON CONFLICT (tableName) DO UPDATE SET schemaHash = $schemaHash, updatedAt = $updatedAt;
|
84
84
|
`, { tableName, schemaHash, updatedAt });
|
85
85
|
}
|
86
|
-
}).pipe(Effect.withSpan('@livestore/common:migrateTable', {
|
86
|
+
}).pipe(Effect.withSpan('@livestore/common:migrateTable', {
|
87
|
+
attributes: {
|
88
|
+
'span.label': tableAst.name,
|
89
|
+
tableName: tableAst.name,
|
90
|
+
},
|
91
|
+
}));
|
87
92
|
const createIndexFromDefinition = (tableName, index) => {
|
88
93
|
const uniqueStr = index.unique ? 'UNIQUE' : '';
|
89
94
|
return sql `create ${uniqueStr} index if not exists ${index.name} on ${tableName} (${index.columns.join(', ')})`;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Effect } from '@livestore/utils/effect';
|
2
2
|
import { UnexpectedError } from '../adapter-types.js';
|
3
|
-
import type { LiveStoreSchema } from '../schema/
|
3
|
+
import type { LiveStoreSchema } from '../schema/mod.js';
|
4
4
|
import type { MutationDef } from '../schema/mutations.js';
|
5
5
|
import type { MutationDefInfo, SchemaManager } from './common.js';
|
6
6
|
export declare const validateSchema: (schema: LiveStoreSchema, schemaManager: SchemaManager) => Effect.Effect<void, UnexpectedError, never>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjE,eAAO,MAAM,cAAc,WAAY,eAAe,iBAAiB,aAAa,gDAwBhF,CAAA;AAEJ,eAAO,MAAM,mBAAmB,gBACjB,WAAW,CAAC,GAAG,iBACb,aAAa,6BACD,eAAe,GAAG,SAAS,SA0BvD,CAAA"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import type { Scope } from '@livestore/utils/effect';
|
2
|
+
import { Effect } from '@livestore/utils/effect';
|
3
|
+
import * as otel from '@opentelemetry/api';
|
4
|
+
import type { Coordinator, UnexpectedError } from '../adapter-types.js';
|
5
|
+
import * as EventId from '../schema/EventId.js';
|
6
|
+
import { type LiveStoreSchema } from '../schema/mod.js';
|
7
|
+
import * as MutationEvent from '../schema/MutationEvent.js';
|
8
|
+
import type { SyncState } from './syncstate.js';
|
9
|
+
/**
|
10
|
+
* Rebase behaviour:
|
11
|
+
* - We continously pull mutations from the leader and apply them to the local store.
|
12
|
+
* - If there was a race condition (i.e. the leader and client session have both advacned),
|
13
|
+
* we'll need to rebase the local pending mutations on top of the leader's head.
|
14
|
+
* - The goal is to never block the UI, so we'll interrupt rebasing if a new mutations is pushed by the client session.
|
15
|
+
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply a read model changes during a rebase.
|
16
|
+
* - We might need to make the rebase behaviour configurable e.g. to let users manually trigger a rebase
|
17
|
+
*/
|
18
|
+
export declare const makeClientSessionSyncProcessor: ({ schema, initialLeaderHead, pushToLeader, pullFromLeader, applyMutation, rollback, refreshTables, span, }: {
|
19
|
+
schema: LiveStoreSchema;
|
20
|
+
initialLeaderHead: EventId.EventId;
|
21
|
+
pushToLeader: (batch: ReadonlyArray<MutationEvent.AnyEncoded>) => void;
|
22
|
+
pullFromLeader: Coordinator["mutations"]["pull"];
|
23
|
+
applyMutation: (mutationEventDecoded: MutationEvent.PartialAny, options: {
|
24
|
+
otelContext: otel.Context;
|
25
|
+
withChangeset: boolean;
|
26
|
+
}) => {
|
27
|
+
writeTables: Set<string>;
|
28
|
+
sessionChangeset: Uint8Array | undefined;
|
29
|
+
};
|
30
|
+
rollback: (changeset: Uint8Array) => void;
|
31
|
+
refreshTables: (tables: Set<string>) => void;
|
32
|
+
span: otel.Span;
|
33
|
+
}) => ClientSessionSyncProcessor;
|
34
|
+
export interface ClientSessionSyncProcessor {
|
35
|
+
push: (batch: ReadonlyArray<MutationEvent.PartialAny>, options: {
|
36
|
+
otelContext: otel.Context;
|
37
|
+
}) => {
|
38
|
+
writeTables: Set<string>;
|
39
|
+
};
|
40
|
+
boot: Effect.Effect<void, UnexpectedError, Scope.Scope>;
|
41
|
+
syncStateRef: {
|
42
|
+
current: SyncState;
|
43
|
+
};
|
44
|
+
}
|
45
|
+
//# sourceMappingURL=client-session-sync-processor.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"client-session-sync-processor.d.ts","sourceRoot":"","sources":["../../src/sync/client-session-sync-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,+GASxC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAA;IAClC,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IACtE,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;IAChD,aAAa,EAAE,CACb,oBAAoB,EAAE,aAAa,CAAC,UAAU,EAC9C,OAAO,EAAE;QAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,KAC3D;QACH,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACxB,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAA;KACzC,CAAA;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,IAAI,CAAA;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAE5C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAA;CAChB,KAAG,0BAoJH,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,CACJ,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,EAC9C,OAAO,EAAE;QAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAA;KAAE,KACnC;QACH,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KACzB,CAAA;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAEvD,YAAY,EAAE;QAAE,OAAO,EAAE,SAAS,CAAA;KAAE,CAAA;CACrC"}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import { LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils';
|
2
|
+
import { Effect, Schema, Stream } from '@livestore/utils/effect';
|
3
|
+
import * as otel from '@opentelemetry/api';
|
4
|
+
import * as EventId from '../schema/EventId.js';
|
5
|
+
import * as MutationEvent from '../schema/MutationEvent.js';
|
6
|
+
import { updateSyncState } from './syncstate.js';
|
7
|
+
/**
|
8
|
+
* Rebase behaviour:
|
9
|
+
* - We continously pull mutations from the leader and apply them to the local store.
|
10
|
+
* - If there was a race condition (i.e. the leader and client session have both advacned),
|
11
|
+
* we'll need to rebase the local pending mutations on top of the leader's head.
|
12
|
+
* - The goal is to never block the UI, so we'll interrupt rebasing if a new mutations is pushed by the client session.
|
13
|
+
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply a read model changes during a rebase.
|
14
|
+
* - We might need to make the rebase behaviour configurable e.g. to let users manually trigger a rebase
|
15
|
+
*/
|
16
|
+
export const makeClientSessionSyncProcessor = ({ schema, initialLeaderHead, pushToLeader, pullFromLeader, applyMutation, rollback, refreshTables, span, }) => {
|
17
|
+
const mutationEventSchema = MutationEvent.makeMutationEventSchemaMemo(schema);
|
18
|
+
const syncStateRef = {
|
19
|
+
current: {
|
20
|
+
localHead: initialLeaderHead,
|
21
|
+
upstreamHead: initialLeaderHead,
|
22
|
+
pending: [],
|
23
|
+
// TODO init rollbackTail from leader to be ready for backend rebasing
|
24
|
+
rollbackTail: [],
|
25
|
+
},
|
26
|
+
};
|
27
|
+
const isLocalEvent = (mutationEventEncoded) => {
|
28
|
+
const mutationDef = schema.mutations.get(mutationEventEncoded.mutation);
|
29
|
+
return mutationDef.options.localOnly;
|
30
|
+
};
|
31
|
+
const push = (batch, { otelContext }) => {
|
32
|
+
// TODO validate batch
|
33
|
+
let baseEventId = syncStateRef.current.localHead;
|
34
|
+
const encodedMutationEvents = batch.map((mutationEvent) => {
|
35
|
+
const mutationDef = schema.mutations.get(mutationEvent.mutation);
|
36
|
+
const nextIdPair = EventId.nextPair(baseEventId, mutationDef.options.localOnly);
|
37
|
+
baseEventId = nextIdPair.id;
|
38
|
+
return new MutationEvent.EncodedWithMeta(Schema.encodeUnknownSync(mutationEventSchema)({ ...mutationEvent, ...nextIdPair }));
|
39
|
+
});
|
40
|
+
const updateResult = updateSyncState({
|
41
|
+
syncState: syncStateRef.current,
|
42
|
+
payload: { _tag: 'local-push', newEvents: encodedMutationEvents },
|
43
|
+
isLocalEvent,
|
44
|
+
isEqualEvent: MutationEvent.isEqualEncoded,
|
45
|
+
});
|
46
|
+
span.addEvent('local-push', {
|
47
|
+
batchSize: encodedMutationEvents.length,
|
48
|
+
updateResult: TRACE_VERBOSE ? JSON.stringify(updateResult) : undefined,
|
49
|
+
});
|
50
|
+
if (updateResult._tag !== 'advance') {
|
51
|
+
return shouldNeverHappen(`Expected advance, got ${updateResult._tag}`);
|
52
|
+
}
|
53
|
+
syncStateRef.current = updateResult.newSyncState;
|
54
|
+
const writeTables = new Set();
|
55
|
+
for (const mutationEvent of updateResult.newEvents) {
|
56
|
+
// TODO avoid encoding and decoding here again
|
57
|
+
const decodedMutationEvent = Schema.decodeSync(mutationEventSchema)(mutationEvent);
|
58
|
+
const res = applyMutation(decodedMutationEvent, { otelContext, withChangeset: true });
|
59
|
+
for (const table of res.writeTables) {
|
60
|
+
writeTables.add(table);
|
61
|
+
}
|
62
|
+
mutationEvent.meta.sessionChangeset = res.sessionChangeset;
|
63
|
+
}
|
64
|
+
pushToLeader(encodedMutationEvents);
|
65
|
+
return { writeTables };
|
66
|
+
};
|
67
|
+
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
68
|
+
const boot = Effect.gen(function* () {
|
69
|
+
yield* pullFromLeader.pipe(Stream.tap(({ payload, remaining }) => Effect.gen(function* () {
|
70
|
+
// console.log('pulled payload from leader', { payload, remaining })
|
71
|
+
const updateResult = updateSyncState({
|
72
|
+
syncState: syncStateRef.current,
|
73
|
+
payload,
|
74
|
+
isLocalEvent,
|
75
|
+
isEqualEvent: MutationEvent.isEqualEncoded,
|
76
|
+
});
|
77
|
+
if (updateResult._tag === 'reject') {
|
78
|
+
debugger;
|
79
|
+
throw new Error('TODO: implement reject in client-session-sync-queue for pull');
|
80
|
+
}
|
81
|
+
syncStateRef.current = updateResult.newSyncState;
|
82
|
+
if (updateResult._tag === 'rebase') {
|
83
|
+
span.addEvent('pull:rebase', {
|
84
|
+
payloadTag: payload._tag,
|
85
|
+
payload: TRACE_VERBOSE ? JSON.stringify(payload) : undefined,
|
86
|
+
newEventsCount: updateResult.newEvents.length,
|
87
|
+
rollbackCount: updateResult.eventsToRollback.length,
|
88
|
+
res: TRACE_VERBOSE ? JSON.stringify(updateResult) : undefined,
|
89
|
+
remaining,
|
90
|
+
});
|
91
|
+
if (LS_DEV) {
|
92
|
+
console.debug('pull:rebase: rollback', updateResult.eventsToRollback.length, ...updateResult.eventsToRollback.map((_) => _.toJSON()));
|
93
|
+
}
|
94
|
+
for (let i = updateResult.eventsToRollback.length - 1; i >= 0; i--) {
|
95
|
+
const event = updateResult.eventsToRollback[i];
|
96
|
+
if (event.meta.sessionChangeset) {
|
97
|
+
rollback(event.meta.sessionChangeset);
|
98
|
+
event.meta.sessionChangeset = undefined;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
102
|
+
else {
|
103
|
+
span.addEvent('pull:advance', {
|
104
|
+
payloadTag: payload._tag,
|
105
|
+
payload: TRACE_VERBOSE ? JSON.stringify(payload) : undefined,
|
106
|
+
newEventsCount: updateResult.newEvents.length,
|
107
|
+
res: TRACE_VERBOSE ? JSON.stringify(updateResult) : undefined,
|
108
|
+
remaining,
|
109
|
+
});
|
110
|
+
}
|
111
|
+
if (updateResult.newEvents.length === 0)
|
112
|
+
return;
|
113
|
+
const writeTables = new Set();
|
114
|
+
for (const mutationEvent of updateResult.newEvents) {
|
115
|
+
const decodedMutationEvent = Schema.decodeSync(mutationEventSchema)(mutationEvent);
|
116
|
+
const res = applyMutation(decodedMutationEvent, { otelContext, withChangeset: true });
|
117
|
+
for (const table of res.writeTables) {
|
118
|
+
writeTables.add(table);
|
119
|
+
}
|
120
|
+
mutationEvent.meta.sessionChangeset = res.sessionChangeset;
|
121
|
+
}
|
122
|
+
refreshTables(writeTables);
|
123
|
+
})), Stream.runDrain, Effect.tapCauseLogPretty, Effect.forkScoped);
|
124
|
+
});
|
125
|
+
return {
|
126
|
+
push,
|
127
|
+
boot,
|
128
|
+
syncStateRef,
|
129
|
+
};
|
130
|
+
};
|
131
|
+
//# sourceMappingURL=client-session-sync-processor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"client-session-sync-processor.js","sourceRoot":"","sources":["../../src/sync/client-session-sync-processor.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/index.d.ts
CHANGED
package/dist/sync/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA"}
|
package/dist/sync/index.js
CHANGED
package/dist/sync/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"compact-events.d.ts","sourceRoot":"","sources":["../../../src/sync/next/compact-events.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"compact-events.d.ts","sourceRoot":"","sources":["../../../src/sync/next/compact-events.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,aAAc,UAAU,KAAG;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAkDlG,CAAA"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { replacesFacts } from './facts.js';
|
2
2
|
import { graphologyDag } from './graphology_.js';
|
3
|
-
import {
|
3
|
+
import { eventIdToString } from './history-dag.js';
|
4
|
+
import { emptyHistoryDag } from './history-dag-common.js';
|
4
5
|
/**
|
5
6
|
* Idea:
|
6
7
|
* - iterate over all events from leaves to root
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"compact-events.js","sourceRoot":"","sources":["../../../src/sync/next/compact-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
1
|
+
{"version":3,"file":"compact-events.js","sourceRoot":"","sources":["../../../src/sync/next/compact-events.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import type
|
1
|
+
import type * as EventId from '../../schema/EventId.js';
|
2
2
|
import type { FactsCallback, MutationEventFacts, MutationEventFactsGroup, MutationEventFactsSnapshot } from '../../schema/mutations.js';
|
3
|
-
import { type HistoryDag, type HistoryDagNode } from './history-dag.js';
|
4
|
-
export declare const factsSnapshotForEvents: (events: HistoryDagNode[], endEventId: EventId) => MutationEventFactsSnapshot;
|
5
|
-
export declare const factsSnapshotForDag: (dag: HistoryDag, endEventId: EventId | undefined) => MutationEventFactsSnapshot;
|
3
|
+
import { type HistoryDag, type HistoryDagNode } from './history-dag-common.js';
|
4
|
+
export declare const factsSnapshotForEvents: (events: HistoryDagNode[], endEventId: EventId.EventId) => MutationEventFactsSnapshot;
|
5
|
+
export declare const factsSnapshotForDag: (dag: HistoryDag, endEventId: EventId.EventId | undefined) => MutationEventFactsSnapshot;
|
6
6
|
export type FactValidationResult = {
|
7
7
|
success: true;
|
8
8
|
} | {
|
@@ -33,5 +33,5 @@ export declare const getFactsGroupForMutationArgs: ({ factsCallback, args, curre
|
|
33
33
|
args: any;
|
34
34
|
currentFacts: MutationEventFactsSnapshot;
|
35
35
|
}) => MutationEventFactsGroup;
|
36
|
-
export declare const compareEventIds: (a: EventId, b: EventId) => number;
|
36
|
+
export declare const compareEventIds: (a: EventId.EventId, b: EventId.EventId) => number;
|
37
37
|
//# sourceMappingURL=facts.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../../src/sync/next/facts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../../src/sync/next/facts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEhG,eAAO,MAAM,sBAAsB,WACzB,cAAc,EAAE,cACZ,OAAO,CAAC,OAAO,KAC1B,0BAYF,CAAA;AAED,eAAO,MAAM,mBAAmB,QACzB,UAAU,cACH,OAAO,CAAC,OAAO,GAAG,SAAS,KACtC,0BAeF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,OAAO,EAAE,IAAI,CAAA;CACd,GACD;IACE,OAAO,EAAE,KAAK,CAAA;IACd,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,kBAAkB,CAAA;IACjC,QAAQ,EAAE;QACR,QAAQ,EAAE,kBAAkB,CAAA;QAC5B,QAAQ,EAAE,kBAAkB,CAAA;KAC7B,CAAA;IACD,eAAe,EAAE,kBAAkB,CAAA;CACpC,CAAA;AAEL,eAAO,MAAM,aAAa,qCAGvB;IACD,UAAU,EAAE,uBAAuB,EAAE,CAAA;IACrC,eAAe,EAAE,0BAA0B,CAAA;CAC5C,KAAG,oBA8BH,CAAA;AAED,eAAO,MAAM,eAAe,eAAgB,uBAAuB,EAAE,YAAY,0BAA0B,SAI1G,CAAA;AAED,eAAO,MAAM,cAAc,cAAe,uBAAuB,YAAY,0BAA0B,SAQtG,CAAA;AAsBD,wCAAwC;AACxC,eAAO,MAAM,SAAS,WAAY,uBAAuB,UAAU,uBAAuB,KAAG,OAItC,CAAA;AAEvD,eAAO,MAAM,aAAa,WAAY,uBAAuB,UAAU,uBAAuB,KAAG,OAYhG,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,kBAAkB,YAAY,kBAAkB,YACrB,CAAA;AAE/D,eAAO,MAAM,aAAa,UAAW,kBAAkB,WAItD,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,kBAAkB,QAAQ,kBAAkB,KAAG,OAOnF,CAAA;AAED,eAAO,MAAM,4BAA4B,2CAItC;IACD,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAC7C,IAAI,EAAE,GAAG,CAAA;IACT,YAAY,EAAE,0BAA0B,CAAA;CACzC,KAAG,uBAwCH,CAAA;AAED,eAAO,MAAM,eAAe,MAAO,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,WAKrE,CAAA"}
|
package/dist/sync/next/facts.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { notYetImplemented } from '@livestore/utils';
|
2
2
|
import { graphologyDag } from './graphology_.js';
|
3
|
-
import { EMPTY_FACT_VALUE } from './history-dag.js';
|
3
|
+
import { EMPTY_FACT_VALUE } from './history-dag-common.js';
|
4
4
|
export const factsSnapshotForEvents = (events, endEventId) => {
|
5
5
|
const facts = new Map();
|
6
6
|
for (const event of events) {
|