@livestore/common 0.0.0-snapshot-068f5fa8d02cd26bb64eb4e052900feac9ae59ff → 0.0.0-snapshot-1a7846e5cc007b08a8ded7230306f824499fbba8
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +4 -4
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +21 -17
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/eventlog.js +2 -2
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +12 -11
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +2 -2
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +11 -11
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/{apply-event.d.ts → materialize-event.d.ts} +7 -7
- package/dist/leader-thread/materialize-event.d.ts.map +1 -0
- package/dist/leader-thread/{apply-event.js → materialize-event.js} +14 -14
- package/dist/leader-thread/materialize-event.js.map +1 -0
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +7 -7
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/types.d.ts +4 -4
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/{rehydrate-from-eventlog.d.ts → rematerialize-from-eventlog.d.ts} +4 -4
- package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
- package/dist/{rehydrate-from-eventlog.js → rematerialize-from-eventlog.js} +12 -13
- package/dist/rematerialize-from-eventlog.js.map +1 -0
- package/dist/schema/mod.d.ts +1 -1
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +1 -1
- package/dist/schema/mod.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +3 -3
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +6 -6
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -1
- package/src/leader-thread/LeaderSyncProcessor.ts +28 -30
- package/src/leader-thread/eventlog.ts +2 -2
- package/src/leader-thread/leader-worker-devtools.ts +14 -11
- package/src/leader-thread/make-leader-thread-layer.ts +14 -14
- package/src/leader-thread/{apply-event.ts → materialize-event.ts} +22 -28
- package/src/leader-thread/recreate-db.ts +7 -7
- package/src/leader-thread/types.ts +4 -4
- package/src/{rehydrate-from-eventlog.ts → rematerialize-from-eventlog.ts} +41 -38
- package/src/schema/mod.ts +1 -1
- package/src/sync/ClientSessionSyncProcessor.ts +7 -7
- package/dist/leader-thread/apply-event.d.ts.map +0 -1
- package/dist/leader-thread/apply-event.js.map +0 -1
- package/dist/rehydrate-from-eventlog.d.ts.map +0 -1
- package/dist/rehydrate-from-eventlog.js.map +0 -1
|
@@ -2,15 +2,15 @@ import { Effect } from '@livestore/utils/effect';
|
|
|
2
2
|
import type { SqliteDb } from '../adapter-types.js';
|
|
3
3
|
import type { LiveStoreSchema } from '../schema/mod.js';
|
|
4
4
|
import { EventId } from '../schema/mod.js';
|
|
5
|
-
import type {
|
|
6
|
-
export declare const
|
|
5
|
+
import type { MaterializeEvent } from './types.js';
|
|
6
|
+
export declare const makeMaterializeEvent: ({ schema, dbState: db, dbEventlog, }: {
|
|
7
7
|
schema: LiveStoreSchema;
|
|
8
|
-
|
|
8
|
+
dbState: SqliteDb;
|
|
9
9
|
dbEventlog: SqliteDb;
|
|
10
|
-
}) => Effect.Effect<
|
|
11
|
-
export declare const rollback: ({
|
|
12
|
-
|
|
10
|
+
}) => Effect.Effect<MaterializeEvent, never>;
|
|
11
|
+
export declare const rollback: ({ dbState, dbEventlog, eventIdsToRollback, }: {
|
|
12
|
+
dbState: SqliteDb;
|
|
13
13
|
dbEventlog: SqliteDb;
|
|
14
14
|
eventIdsToRollback: EventId.EventId[];
|
|
15
15
|
}) => Effect.Effect<void, never, never>;
|
|
16
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=materialize-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialize-event.d.ts","sourceRoot":"","sources":["../../src/leader-thread/materialize-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAyB,MAAM,yBAAyB,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,oBAAoB,GAAI,sCAIlC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,QAAQ,CAAA;IACjB,UAAU,EAAE,QAAQ,CAAA;CACrB,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAiGrC,CAAA;AAEJ,eAAO,MAAM,QAAQ,GAAI,8CAItB;IACD,OAAO,EAAE,QAAQ,CAAA;IACjB,UAAU,EAAE,QAAQ,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;CACtC,sCAsCE,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { LS_DEV, shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { Effect, ReadonlyArray, Schema } from '@livestore/utils/effect';
|
|
3
3
|
import { getExecArgsFromEvent } from '../materializer-helper.js';
|
|
4
|
-
import { EventId,
|
|
4
|
+
import { EventId, getEventDef, SystemTables } from '../schema/mod.js';
|
|
5
5
|
import { insertRow } from '../sql-queries/index.js';
|
|
6
6
|
import { sql } from '../util.js';
|
|
7
7
|
import { execSql, execSqlPrepared } from './connection.js';
|
|
8
8
|
import * as Eventlog from './eventlog.js';
|
|
9
|
-
export const
|
|
9
|
+
export const makeMaterializeEvent = ({ schema, dbState: db, dbEventlog, }) => Effect.gen(function* () {
|
|
10
10
|
const eventDefSchemaHashMap = new Map(
|
|
11
11
|
// TODO Running `Schema.hash` can be a bottleneck for larger schemas. There is an opportunity to run this
|
|
12
12
|
// at build time and lookup the pre-computed hash at runtime.
|
|
@@ -28,7 +28,7 @@ export const makeApplyEvent = ({ schema, dbReadModel: db, dbEventlog, }) => Effe
|
|
|
28
28
|
// }
|
|
29
29
|
// },
|
|
30
30
|
// })
|
|
31
|
-
// console.group('[@livestore/common:leader-thread:
|
|
31
|
+
// console.group('[@livestore/common:leader-thread:materializeEvent]', { eventName })
|
|
32
32
|
const session = db.session();
|
|
33
33
|
for (const { statementSql, bindValues } of execArgsArr) {
|
|
34
34
|
// console.debug(eventName, statementSql, bindValues)
|
|
@@ -39,8 +39,8 @@ export const makeApplyEvent = ({ schema, dbReadModel: db, dbEventlog, }) => Effe
|
|
|
39
39
|
session.finish();
|
|
40
40
|
// TODO use prepared statements
|
|
41
41
|
yield* execSql(db, ...insertRow({
|
|
42
|
-
tableName: SESSION_CHANGESET_META_TABLE,
|
|
43
|
-
columns: sessionChangesetMetaTable.sqliteDef.columns,
|
|
42
|
+
tableName: SystemTables.SESSION_CHANGESET_META_TABLE,
|
|
43
|
+
columns: SystemTables.sessionChangesetMetaTable.sqliteDef.columns,
|
|
44
44
|
values: {
|
|
45
45
|
idGlobal: eventEncoded.id.global,
|
|
46
46
|
idClient: eventEncoded.id.client,
|
|
@@ -68,36 +68,36 @@ export const makeApplyEvent = ({ schema, dbReadModel: db, dbEventlog, }) => Effe
|
|
|
68
68
|
}
|
|
69
69
|
: { _tag: 'no-op' },
|
|
70
70
|
};
|
|
71
|
-
}).pipe(Effect.withSpan(`@livestore/common:leader-thread:
|
|
71
|
+
}).pipe(Effect.withSpan(`@livestore/common:leader-thread:materializeEvent`, {
|
|
72
72
|
attributes: {
|
|
73
73
|
eventName: eventEncoded.name,
|
|
74
|
-
|
|
74
|
+
eventId: eventEncoded.id,
|
|
75
75
|
'span.label': `${EventId.toString(eventEncoded.id)} ${eventEncoded.name}`,
|
|
76
76
|
},
|
|
77
77
|
}));
|
|
78
78
|
});
|
|
79
|
-
export const rollback = ({
|
|
80
|
-
const rollbackEvents =
|
|
81
|
-
.select(sql `SELECT * FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`).join(', ')})`)
|
|
79
|
+
export const rollback = ({ dbState, dbEventlog, eventIdsToRollback, }) => Effect.gen(function* () {
|
|
80
|
+
const rollbackEvents = dbState
|
|
81
|
+
.select(sql `SELECT * FROM ${SystemTables.SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`).join(', ')})`)
|
|
82
82
|
.map((_) => ({ id: { global: _.idGlobal, client: _.idClient }, changeset: _.changeset, debug: _.debug }))
|
|
83
83
|
.toSorted((a, b) => EventId.compare(a.id, b.id));
|
|
84
84
|
// Apply changesets in reverse order
|
|
85
85
|
for (let i = rollbackEvents.length - 1; i >= 0; i--) {
|
|
86
86
|
const { changeset } = rollbackEvents[i];
|
|
87
87
|
if (changeset !== null) {
|
|
88
|
-
|
|
88
|
+
dbState.makeChangeset(changeset).invert().apply();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
const eventIdPairChunks = ReadonlyArray.chunksOf(100)(eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`));
|
|
92
92
|
// Delete the changeset rows
|
|
93
93
|
for (const eventIdPairChunk of eventIdPairChunks) {
|
|
94
|
-
|
|
94
|
+
dbState.execute(sql `DELETE FROM ${SystemTables.SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
|
|
95
95
|
}
|
|
96
96
|
// Delete the eventlog rows
|
|
97
97
|
for (const eventIdPairChunk of eventIdPairChunks) {
|
|
98
|
-
dbEventlog.execute(sql `DELETE FROM ${EVENTLOG_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
|
|
98
|
+
dbEventlog.execute(sql `DELETE FROM ${SystemTables.EVENTLOG_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
|
|
99
99
|
}
|
|
100
100
|
}).pipe(Effect.withSpan('@livestore/common:LeaderSyncProcessor:rollback', {
|
|
101
101
|
attributes: { count: eventIdsToRollback.length },
|
|
102
102
|
}));
|
|
103
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=materialize-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialize-event.js","sourceRoot":"","sources":["../../src/leader-thread/materialize-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,MAAM,EACN,OAAO,EAAE,EAAE,EACX,UAAU,GAKX,EAA0C,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,qBAAqB,GAAG,IAAI,GAAG;IACnC,yGAAyG;IACzG,6DAA6D;IAC7D,2DAA2D;IAC3D,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAU,CAAC,CACzF,CAAA;IAED,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,KAAK,CAAA;QAEnD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAA;QACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAE/C,MAAM,WAAW,GAAG,oBAAoB,CAAC;YACvC,QAAQ;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE;SACrD,CAAC,CAAA;QAEF,yEAAyE;QACzE,2EAA2E;QAC3E,8CAA8C;QAC9C,+BAA+B;QAC/B,oGAAoG;QACpG,QAAQ;QACR,OAAO;QACP,KAAK;QAEL,qFAAqF;QAErF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QAE5B,KAAK,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,WAAW,EAAE,CAAC;YACvD,qDAAqD;YACrD,sDAAsD;YACtD,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;QACrC,OAAO,CAAC,MAAM,EAAE,CAAA;QAEhB,+BAA+B;QAC/B,KAAK,CAAC,CAAC,OAAO,CACZ,EAAE,EACF,GAAG,SAAS,CAAC;YACX,SAAS,EAAE,YAAY,CAAC,4BAA4B;YACpD,OAAO,EAAE,YAAY,CAAC,yBAAyB,CAAC,SAAS,CAAC,OAAO;YACjE,MAAM,EAAE;gBACN,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM;gBAChC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM;gBAChC,gEAAgE;gBAChE,SAAS,EAAE,SAAS,IAAI,IAAI;gBAC5B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;aACnC;SACF,CAAC,CACH,CAAA;QAED,qBAAqB;QAErB,oBAAoB;QACpB,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAA;YACnC,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;YAErG,KAAK,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAChC,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,YAAY,CAAC,QAAQ,EACrB,YAAY,CAAC,SAAS,CACvB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,mHAAmH;QACrH,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,SAAS;gBACzB,CAAC,CAAC;oBACE,IAAI,EAAE,kBAA2B;oBACjC,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;iBACnC;gBACH,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE;SAC/B,CAAA;IACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,kDAAkD,EAAE;QAClE,UAAU,EAAE;YACV,SAAS,EAAE,YAAY,CAAC,IAAI;YAC5B,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,YAAY,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE;SAC1E;KACF,CAAC,CAEH,CAAA;AACL,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,OAAO,EACP,UAAU,EACV,kBAAkB,GAKnB,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,cAAc,GAAG,OAAO;SAC3B,MAAM,CACL,GAAG,CAAA,iBAAiB,YAAY,CAAC,4BAA4B,mCAAmC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7K;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACxG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElD,oCAAoC;IACpC,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC,CAAE,CAAA;QACxC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;QACnD,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CACnD,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAC/D,CAAA;IAED,4BAA4B;IAC5B,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,OAAO,CAAC,OAAO,CACb,GAAG,CAAA,eAAe,YAAY,CAAC,4BAA4B,mCAAmC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7H,CAAA;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,UAAU,CAAC,OAAO,CAChB,GAAG,CAAA,eAAe,YAAY,CAAC,mBAAmB,mCAAmC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACpH,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE;IAChE,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE;CACjD,CAAC,CACH,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recreate-db.d.ts","sourceRoot":"","sources":["../../src/leader-thread/recreate-db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAS,MAAM,yBAAyB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAkB,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,
|
|
1
|
+
{"version":3,"file":"recreate-db.d.ts","sourceRoot":"","sources":["../../src/leader-thread/recreate-db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAS,MAAM,yBAAyB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAkB,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,EAAwC,eAAe,EAAE,MAAM,aAAa,CAAA;AAEnF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CACpC;IAAE,gBAAgB,EAAE,gBAAgB,CAAA;CAAE,EACtC,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,gBAAgB,EACjE,eAAe,GAAG,UAAU,CAAC,UAAU,CA2GxC,CAAA"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { casesHandled } from '@livestore/utils';
|
|
2
2
|
import { Effect, Queue } from '@livestore/utils/effect';
|
|
3
|
-
import { migrateDb,
|
|
3
|
+
import { migrateDb, rematerializeFromEventlog, UnexpectedError } from '../index.js';
|
|
4
4
|
import { configureConnection } from './connection.js';
|
|
5
5
|
import { LeaderThreadCtx } from './types.js';
|
|
6
6
|
export const recreateDb = Effect.gen(function* () {
|
|
7
|
-
const {
|
|
7
|
+
const { dbState, dbEventlog, schema, bootStatusQueue, materializeEvent } = yield* LeaderThreadCtx;
|
|
8
8
|
const migrationOptions = schema.migrationOptions;
|
|
9
9
|
let migrationsReport;
|
|
10
10
|
yield* Effect.addFinalizer(Effect.fn('recreateDb:finalizer')(function* (ex) {
|
|
11
11
|
if (ex._tag === 'Failure')
|
|
12
|
-
|
|
12
|
+
dbState.destroy();
|
|
13
13
|
}));
|
|
14
14
|
// NOTE to speed up the operations below, we're creating a temporary in-memory database
|
|
15
15
|
// and later we'll overwrite the persisted database with the new data
|
|
16
16
|
// TODO bring back this optimization
|
|
17
17
|
// const tmpDb = yield* makeSqliteDb({ _tag: 'in-memory' })
|
|
18
|
-
const tmpDb =
|
|
18
|
+
const tmpDb = dbState;
|
|
19
19
|
yield* configureConnection(tmpDb, { foreignKeys: true });
|
|
20
20
|
const initDb = (hooks) => Effect.gen(function* () {
|
|
21
21
|
yield* Effect.tryAll(() => hooks?.init?.(tmpDb)).pipe(UnexpectedError.mapToUnexpectedError);
|
|
@@ -32,11 +32,11 @@ export const recreateDb = Effect.gen(function* () {
|
|
|
32
32
|
const hooks = migrationOptions.hooks;
|
|
33
33
|
const initResult = yield* initDb(hooks);
|
|
34
34
|
migrationsReport = initResult.migrationsReport;
|
|
35
|
-
yield*
|
|
35
|
+
yield* rematerializeFromEventlog({
|
|
36
36
|
// db: initResult.tmpDb,
|
|
37
37
|
dbEventlog,
|
|
38
38
|
schema,
|
|
39
|
-
|
|
39
|
+
materializeEvent,
|
|
40
40
|
onProgress: ({ done, total }) => Queue.offer(bootStatusQueue, { stage: 'rehydrating', progress: { done, total } }),
|
|
41
41
|
});
|
|
42
42
|
yield* Effect.tryAll(() => hooks?.post?.(initResult.tmpDb)).pipe(UnexpectedError.mapToUnexpectedError);
|
|
@@ -51,7 +51,7 @@ export const recreateDb = Effect.gen(function* () {
|
|
|
51
51
|
break;
|
|
52
52
|
}
|
|
53
53
|
case 'manual': {
|
|
54
|
-
const oldDbData =
|
|
54
|
+
const oldDbData = dbState.export();
|
|
55
55
|
migrationsReport = { migrations: [] };
|
|
56
56
|
const newDbData = yield* Effect.tryAll(() => migrationOptions.migrate(oldDbData)).pipe(UnexpectedError.mapToUnexpectedError);
|
|
57
57
|
tmpDb.import(newDbData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recreate-db.js","sourceRoot":"","sources":["../../src/leader-thread/recreate-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGvD,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"recreate-db.js","sourceRoot":"","sources":["../../src/leader-thread/recreate-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ declare const LeaderThreadCtx_base: Context.TagClass<LeaderThreadCtx, "LeaderThr
|
|
|
51
51
|
storeId: string;
|
|
52
52
|
clientId: string;
|
|
53
53
|
makeSqliteDb: MakeSqliteDb;
|
|
54
|
-
|
|
54
|
+
dbState: LeaderSqliteDb;
|
|
55
55
|
dbEventlog: LeaderSqliteDb;
|
|
56
56
|
bootStatusQueue: Queue.Queue<BootStatus>;
|
|
57
57
|
shutdownStateSubRef: SubscriptionRef.SubscriptionRef<ShutdownState>;
|
|
@@ -60,7 +60,7 @@ declare const LeaderThreadCtx_base: Context.TagClass<LeaderThreadCtx, "LeaderThr
|
|
|
60
60
|
devtools: DevtoolsContext;
|
|
61
61
|
syncBackend: SyncBackend | undefined;
|
|
62
62
|
syncProcessor: LeaderSyncProcessor;
|
|
63
|
-
|
|
63
|
+
materializeEvent: MaterializeEvent;
|
|
64
64
|
initialState: {
|
|
65
65
|
leaderHead: EventId.EventId;
|
|
66
66
|
migrationsReport: MigrationsReport;
|
|
@@ -74,8 +74,8 @@ declare const LeaderThreadCtx_base: Context.TagClass<LeaderThreadCtx, "LeaderThr
|
|
|
74
74
|
}>;
|
|
75
75
|
export declare class LeaderThreadCtx extends LeaderThreadCtx_base {
|
|
76
76
|
}
|
|
77
|
-
export type
|
|
78
|
-
/** Needed for
|
|
77
|
+
export type MaterializeEvent = (eventEncoded: LiveStoreEvent.EncodedWithMeta, options?: {
|
|
78
|
+
/** Needed for rematerializeFromEventlog */
|
|
79
79
|
skipEventlog?: boolean;
|
|
80
80
|
}) => Effect.Effect<{
|
|
81
81
|
sessionChangeset: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/leader-thread/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,eAAe,EACf,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,WAAW,EACX,eAAe,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,eAAe,CAAA;AAEvD,eAAO,MAAM,sBAAsB,iCAAkC,CAAA;AACrE,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,0BAA0B;;EAErC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA;AAE/E,eAAO,MAAM,kBAAkB;;IAAmE,CAAA;AAClG,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;CAC1C,CAAC,CAAA;AAMF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AAC9F,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAA;AAE3F,MAAM,MAAM,eAAe,GACvB;IACE,OAAO,EAAE,KAAK,CAAA;CACf,GACD;IACE,OAAO,EAAE,IAAI,CAAA;IACb,eAAe,EAAE,MAAM,CAAC,MAAM,CAC5B;QACE,kBAAkB,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACvG,eAAe,EAAE,mBAAmB,CAAA;KACrC,EACD,eAAe,EACf,KAAK,CAAC,KAAK,CACZ,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,eAAe,GACvB;IACE,OAAO,EAAE,IAAI,CAAA;IAGb,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAA;IAC9B,qBAAqB,EAAE,eAAe,CAAC,eAAe,CAAC;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACjF,GACD;IACE,OAAO,EAAE,KAAK,CAAA;CACf,CAAA;;YAKO,eAAe;aACd,MAAM;cACL,MAAM;kBACF,YAAY;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/leader-thread/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Effect } from '@livestore/utils/effect';
|
|
2
2
|
import { type SqliteDb, UnexpectedError } from './adapter-types.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { MaterializeEvent } from './leader-thread/mod.js';
|
|
4
4
|
import type { LiveStoreSchema } from './schema/mod.js';
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const rematerializeFromEventlog: ({ dbEventlog, schema, onProgress, materializeEvent, }: {
|
|
6
6
|
dbEventlog: SqliteDb;
|
|
7
7
|
schema: LiveStoreSchema;
|
|
8
8
|
onProgress: (_: {
|
|
9
9
|
done: number;
|
|
10
10
|
total: number;
|
|
11
11
|
}) => Effect.Effect<void>;
|
|
12
|
-
|
|
12
|
+
materializeEvent: MaterializeEvent;
|
|
13
13
|
}) => Effect.Effect<void, UnexpectedError | import("./adapter-types.js").SqliteError, never>;
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=rematerialize-from-eventlog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rematerialize-from-eventlog.d.ts","sourceRoot":"","sources":["../src/rematerialize-from-eventlog.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAE/E,OAAO,EAAE,KAAK,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAKhE,eAAO,MAAM,yBAAyB,GAAI,uDAOvC;IACD,UAAU,EAAE,QAAQ,CAAA;IAEpB,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvE,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,2FA6FE,CAAA"}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
import { memoizeByRef } from '@livestore/utils';
|
|
2
2
|
import { Chunk, Effect, Option, Schema, Stream } from '@livestore/utils/effect';
|
|
3
3
|
import { UnexpectedError } from './adapter-types.js';
|
|
4
|
-
import { EventId,
|
|
4
|
+
import { EventId, getEventDef, LiveStoreEvent, SystemTables } from './schema/mod.js';
|
|
5
5
|
import { sql } from './util.js';
|
|
6
|
-
export const
|
|
6
|
+
export const rematerializeFromEventlog = ({ dbEventlog,
|
|
7
7
|
// TODO re-use this db when bringing back the boot in-memory db implementation
|
|
8
8
|
// db,
|
|
9
|
-
schema, onProgress,
|
|
10
|
-
const eventsCount = dbEventlog.select(`SELECT COUNT(*) AS count FROM ${EVENTLOG_META_TABLE}`)[0]
|
|
11
|
-
.count;
|
|
9
|
+
schema, onProgress, materializeEvent, }) => Effect.gen(function* () {
|
|
10
|
+
const eventsCount = dbEventlog.select(`SELECT COUNT(*) AS count FROM ${SystemTables.EVENTLOG_META_TABLE}`)[0].count;
|
|
12
11
|
const hashEvent = memoizeByRef((event) => Schema.hash(event.schema));
|
|
13
12
|
const processEvent = (row) => Effect.gen(function* () {
|
|
14
13
|
const eventDef = getEventDef(schema, row.name);
|
|
15
14
|
if (hashEvent(eventDef.eventDef) !== row.schemaHash) {
|
|
16
|
-
yield* Effect.logWarning(`Schema hash mismatch for
|
|
15
|
+
yield* Effect.logWarning(`Schema hash mismatch for event definition ${row.name}. Trying to materialize event anyway.`);
|
|
17
16
|
}
|
|
18
17
|
const args = JSON.parse(row.argsJson);
|
|
19
18
|
// Checking whether the schema has changed in an incompatible way
|
|
20
19
|
yield* Schema.decodeUnknown(eventDef.eventDef.schema)(args).pipe(Effect.mapError((cause) => UnexpectedError.make({
|
|
21
20
|
cause,
|
|
22
21
|
note: `\
|
|
23
|
-
There was an error during
|
|
24
|
-
the persisted
|
|
22
|
+
There was an error during rematerializing from the eventlog while decoding
|
|
23
|
+
the persisted event args for event definition "${row.name}".
|
|
25
24
|
This likely means the schema has changed in an incompatible way.
|
|
26
25
|
`,
|
|
27
26
|
})));
|
|
@@ -33,11 +32,11 @@ This likely means the schema has changed in an incompatible way.
|
|
|
33
32
|
clientId: row.clientId,
|
|
34
33
|
sessionId: row.sessionId,
|
|
35
34
|
});
|
|
36
|
-
yield*
|
|
37
|
-
}).pipe(Effect.withSpan(`@livestore/common:
|
|
35
|
+
yield* materializeEvent(eventEncoded, { skipEventlog: true });
|
|
36
|
+
}).pipe(Effect.withSpan(`@livestore/common:rematerializeFromEventlog:processEvent`));
|
|
38
37
|
const CHUNK_SIZE = 100;
|
|
39
38
|
const stmt = dbEventlog.prepare(sql `\
|
|
40
|
-
SELECT * FROM ${EVENTLOG_META_TABLE}
|
|
39
|
+
SELECT * FROM ${SystemTables.EVENTLOG_META_TABLE}
|
|
41
40
|
WHERE idGlobal > $idGlobal OR (idGlobal = $idGlobal AND idClient > $idClient)
|
|
42
41
|
ORDER BY idGlobal ASC, idClient ASC
|
|
43
42
|
LIMIT ${CHUNK_SIZE}
|
|
@@ -61,5 +60,5 @@ LIMIT ${CHUNK_SIZE}
|
|
|
61
60
|
processedEvents++;
|
|
62
61
|
yield* onProgress({ done: processedEvents, total: eventsCount });
|
|
63
62
|
})), Stream.runDrain);
|
|
64
|
-
}).pipe(Effect.withPerformanceMeasure('@livestore/common:
|
|
65
|
-
//# sourceMappingURL=
|
|
63
|
+
}).pipe(Effect.withPerformanceMeasure('@livestore/common:rematerializeFromEventlog'), Effect.withSpan('@livestore/common:rematerializeFromEventlog'));
|
|
64
|
+
//# sourceMappingURL=rematerialize-from-eventlog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rematerialize-from-eventlog.js","sourceRoot":"","sources":["../src/rematerialize-from-eventlog.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './state/sqlite/system-tables.js';
|
|
1
|
+
export * as SystemTables from './state/sqlite/system-tables.js';
|
|
2
2
|
export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.js';
|
|
3
3
|
export * from './EventDef.js';
|
|
4
4
|
export * from './state/sqlite/schema-helpers.js';
|
package/dist/schema/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,eAAe,CAAA;AAC7B,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
package/dist/schema/mod.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './state/sqlite/system-tables.js';
|
|
1
|
+
export * as SystemTables from './state/sqlite/system-tables.js';
|
|
2
2
|
export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.js';
|
|
3
3
|
export * from './EventDef.js';
|
|
4
4
|
export * from './state/sqlite/schema-helpers.js';
|
package/dist/schema/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,eAAe,CAAA;AAC7B,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
|
@@ -11,16 +11,16 @@ import * as SyncState from './syncstate.js';
|
|
|
11
11
|
* - If there was a race condition (i.e. the leader and client session have both advacned),
|
|
12
12
|
* we'll need to rebase the local pending events on top of the leader's head.
|
|
13
13
|
* - The goal is to never block the UI, so we'll interrupt rebasing if a new events is pushed by the client session.
|
|
14
|
-
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply
|
|
14
|
+
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply state changes during a rebase.
|
|
15
15
|
* - We might need to make the rebase behaviour configurable e.g. to let users manually trigger a rebase
|
|
16
16
|
*
|
|
17
17
|
* Longer term we should evalutate whether we can unify the ClientSessionSyncProcessor with the LeaderSyncProcessor.
|
|
18
18
|
*/
|
|
19
|
-
export declare const makeClientSessionSyncProcessor: ({ schema, clientSession, runtime,
|
|
19
|
+
export declare const makeClientSessionSyncProcessor: ({ schema, clientSession, runtime, materializeEvent, rollback, refreshTables, span, params, confirmUnsavedChanges, }: {
|
|
20
20
|
schema: LiveStoreSchema;
|
|
21
21
|
clientSession: ClientSession;
|
|
22
22
|
runtime: Runtime.Runtime<Scope.Scope>;
|
|
23
|
-
|
|
23
|
+
materializeEvent: (eventDecoded: LiveStoreEvent.PartialAnyDecoded, options: {
|
|
24
24
|
otelContext: otel.Context;
|
|
25
25
|
withChangeset: boolean;
|
|
26
26
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientSessionSyncProcessor.d.ts","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAe,MAAM,EAAsC,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"ClientSessionSyncProcessor.d.ts","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAe,MAAM,EAAsC,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAe,KAAK,eAAe,EAAgB,MAAM,kBAAkB,CAAA;AAElF,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAAI,qHAU5C;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACrC,gBAAgB,EAAE,CAChB,YAAY,EAAE,cAAc,CAAC,iBAAiB,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;YAAE,IAAI,EAAE,kBAAkB,CAAC;YAAC,IAAI,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAA;KACrH,CAAA;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,IAAI,CAAA;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAA;IACf,MAAM,EAAE;QACN,mBAAmB,EAAE,MAAM,CAAA;KAC5B,CAAA;IACD;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAA;CAC/B,KAAG,0BAiQH,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,CACJ,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,EACtD,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;IACvD,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACzD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB,SAAS,EAAE,MAAM;YACf,WAAW,EAAE,MAAM,CAAA;YACnB,YAAY,EAAE,MAAM,CAAA;SACrB,CAAA;KACF,CAAA;CACF"}
|
|
@@ -4,7 +4,7 @@ import { BucketQueue, Effect, FiberHandle, Queue, Schema, Stream, Subscribable }
|
|
|
4
4
|
import * as otel from '@opentelemetry/api';
|
|
5
5
|
import * as EventId from '../schema/EventId.js';
|
|
6
6
|
import * as LiveStoreEvent from '../schema/LiveStoreEvent.js';
|
|
7
|
-
import { getEventDef,
|
|
7
|
+
import { getEventDef, SystemTables } from '../schema/mod.js';
|
|
8
8
|
import { sql } from '../util.js';
|
|
9
9
|
import * as SyncState from './syncstate.js';
|
|
10
10
|
/**
|
|
@@ -13,12 +13,12 @@ import * as SyncState from './syncstate.js';
|
|
|
13
13
|
* - If there was a race condition (i.e. the leader and client session have both advacned),
|
|
14
14
|
* we'll need to rebase the local pending events on top of the leader's head.
|
|
15
15
|
* - The goal is to never block the UI, so we'll interrupt rebasing if a new events is pushed by the client session.
|
|
16
|
-
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply
|
|
16
|
+
* - We also want to avoid "backwards-jumping" in the UI, so we'll transactionally apply state changes during a rebase.
|
|
17
17
|
* - We might need to make the rebase behaviour configurable e.g. to let users manually trigger a rebase
|
|
18
18
|
*
|
|
19
19
|
* Longer term we should evalutate whether we can unify the ClientSessionSyncProcessor with the LeaderSyncProcessor.
|
|
20
20
|
*/
|
|
21
|
-
export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
21
|
+
export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime, materializeEvent, rollback, refreshTables, span, params, confirmUnsavedChanges, }) => {
|
|
22
22
|
const eventSchema = LiveStoreEvent.makeEventDefSchemaMemo(schema);
|
|
23
23
|
const syncStateRef = {
|
|
24
24
|
// The initial state is identical to the leader's initial state
|
|
@@ -70,7 +70,7 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
|
70
70
|
for (const event of mergeResult.newEvents) {
|
|
71
71
|
// TODO avoid encoding and decoding here again
|
|
72
72
|
const decodedEventDef = Schema.decodeSync(eventSchema)(event);
|
|
73
|
-
const res =
|
|
73
|
+
const res = materializeEvent(decodedEventDef, { otelContext, withChangeset: true });
|
|
74
74
|
for (const table of res.writeTables) {
|
|
75
75
|
writeTables.add(table);
|
|
76
76
|
}
|
|
@@ -106,7 +106,7 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
|
106
106
|
}));
|
|
107
107
|
}).pipe(Effect.forever, Effect.interruptible, Effect.tapCauseLogPretty);
|
|
108
108
|
yield* FiberHandle.run(leaderPushingFiberHandle, backgroundLeaderPushing);
|
|
109
|
-
const getMergeCounter = () => clientSession.sqliteDb.select(sql `SELECT mergeCounter FROM ${LEADER_MERGE_COUNTER_TABLE} WHERE id = 0`)[0]?.mergeCounter ?? 0;
|
|
109
|
+
const getMergeCounter = () => clientSession.sqliteDb.select(sql `SELECT mergeCounter FROM ${SystemTables.LEADER_MERGE_COUNTER_TABLE} WHERE id = 0`)[0]?.mergeCounter ?? 0;
|
|
110
110
|
// NOTE We need to lazily call `.pull` as we want the cursor to be updated
|
|
111
111
|
yield* Stream.suspend(() => clientSession.leaderThread.events.pull({
|
|
112
112
|
cursor: { mergeCounter: getMergeCounter(), eventId: syncStateRef.current.localHead },
|
|
@@ -171,7 +171,7 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
|
171
171
|
for (const event of mergeResult.newEvents) {
|
|
172
172
|
// TODO apply changeset if available (will require tracking of write tables as well)
|
|
173
173
|
const decodedEventDef = Schema.decodeSync(eventSchema)(event);
|
|
174
|
-
const res =
|
|
174
|
+
const res = materializeEvent(decodedEventDef, { otelContext, withChangeset: true });
|
|
175
175
|
for (const table of res.writeTables) {
|
|
176
176
|
writeTables.add(table);
|
|
177
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientSessionSyncProcessor.js","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAG1C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"ClientSessionSyncProcessor.js","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/common",
|
|
3
|
-
"version": "0.0.0-snapshot-
|
|
3
|
+
"version": "0.0.0-snapshot-1a7846e5cc007b08a8ded7230306f824499fbba8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"graphology": "0.26.0-alpha1",
|
|
55
55
|
"graphology-dag": "0.4.1",
|
|
56
56
|
"graphology-types": "0.24.8",
|
|
57
|
-
"@livestore/utils": "0.0.0-snapshot-
|
|
57
|
+
"@livestore/utils": "0.0.0-snapshot-1a7846e5cc007b08a8ded7230306f824499fbba8"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"vitest": "^3.1.1"
|
package/src/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from './util.js'
|
|
|
3
3
|
export * from './adapter-types.js'
|
|
4
4
|
export * from './schema-management/migrations.js'
|
|
5
5
|
export * from './materializer-helper.js'
|
|
6
|
-
export * from './
|
|
6
|
+
export * from './rematerialize-from-eventlog.js'
|
|
7
7
|
export * from './sync/index.js'
|
|
8
8
|
export * as Devtools from './devtools/mod.js'
|
|
9
9
|
export * from './debug-info.js'
|