@livestore/common 0.3.1-dev.0 → 0.3.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/adapter-types.d.ts +5 -0
- 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-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +24 -24
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +13 -4
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +2 -0
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/materialize-event.d.ts +3 -3
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +20 -9
- package/dist/leader-thread/materialize-event.js.map +1 -1
- package/dist/leader-thread/mod.d.ts +1 -0
- package/dist/leader-thread/mod.d.ts.map +1 -1
- package/dist/leader-thread/mod.js +1 -0
- package/dist/leader-thread/mod.js.map +1 -1
- package/dist/leader-thread/types.d.ts +1 -0
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/materializer-helper.d.ts +13 -2
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +25 -11
- package/dist/materializer-helper.js.map +1 -1
- package/dist/rematerialize-from-eventlog.js +2 -2
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef.d.ts +6 -1
- package/dist/schema/EventDef.d.ts.map +1 -1
- package/dist/schema/EventDef.js +3 -0
- package/dist/schema/EventDef.js.map +1 -1
- package/dist/schema/LiveStoreEvent.d.ts +35 -1
- package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
- package/dist/schema/LiveStoreEvent.js +22 -4
- package/dist/schema/LiveStoreEvent.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +57 -62
- package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +350 -407
- package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.d.ts +1 -1
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/sqlite-db-helper.d.ts +7 -0
- package/dist/sqlite-db-helper.d.ts.map +1 -0
- package/dist/sqlite-db-helper.js +29 -0
- package/dist/sqlite-db-helper.js.map +1 -0
- package/dist/sync/ClientSessionSyncProcessor.d.ts +6 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +21 -6
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +4 -4
- package/src/adapter-types.ts +5 -0
- package/src/index.ts +1 -0
- package/src/leader-thread/LeaderSyncProcessor.ts +17 -2
- package/src/leader-thread/eventlog.ts +2 -0
- package/src/leader-thread/materialize-event.ts +25 -11
- package/src/leader-thread/mod.ts +1 -0
- package/src/leader-thread/types.ts +4 -1
- package/src/materializer-helper.ts +45 -19
- package/src/rematerialize-from-eventlog.ts +2 -2
- package/src/schema/EventDef.ts +11 -1
- package/src/schema/LiveStoreEvent.ts +29 -4
- package/src/schema/state/sqlite/query-builder/api.ts +1 -1
- package/src/schema/state/sqlite/table-def.ts +1 -1
- package/src/sqlite-db-helper.ts +41 -0
- package/src/sync/ClientSessionSyncProcessor.ts +34 -8
- package/src/version.ts +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAQhD,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;IAKxB,sBAAsB;;;;;;;;;;;;;;;;;;;UAGxB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;IAKjC,sBAAsB;;;;;;;;;;;;;;;;;;;UAGxB,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;AAEzE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,kCAAkC,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAUpC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE3E,eAAO,MAAM,0BAA0B,qCAAqC,CAAA;AAG5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;UAMlC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEvE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;IAtD1B,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IActB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6CzB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,YAAkE,CAAA;AAItH,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAE7C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmB5B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,iBAAiB,4BAA4B,CAAA;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;UAK1B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAuC,CAAA"}
|
@@ -69,7 +69,7 @@ export declare namespace FromColumns {
|
|
69
69
|
type RequiredInsertColumnNames<TColumns extends SqliteDsl.Columns> = SqliteDsl.FromColumns.RequiredInsertColumnNames<TColumns>;
|
70
70
|
type InsertRowDecoded<TColumns extends SqliteDsl.Columns> = SqliteDsl.FromColumns.InsertRowDecoded<TColumns>;
|
71
71
|
}
|
72
|
-
type SqliteTableDefForInput<TName extends string, TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> = SqliteDsl.TableDefinition<TName, PrettifyFlat<ToColumns<TColumns>>>;
|
72
|
+
export type SqliteTableDefForInput<TName extends string, TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> = SqliteDsl.TableDefinition<TName, PrettifyFlat<ToColumns<TColumns>>>;
|
73
73
|
type WithDefaults<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> = {
|
74
74
|
isClientDocumentTable: false;
|
75
75
|
requiredInsertColumnNames: SqliteDsl.FromColumns.RequiredInsertColumnNames<ToColumns<TColumns>>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/table-def.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/table-def.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { SqliteDb } from './adapter-types.js';
|
2
|
+
import type { PreparedBindValues } from './util.js';
|
3
|
+
export declare const makeExecute: (execute: (queryStr: string, bindValues: PreparedBindValues | undefined, options?: {
|
4
|
+
onRowsChanged?: (rowsChanged: number) => void;
|
5
|
+
}) => void) => SqliteDb["execute"];
|
6
|
+
export declare const makeSelect: <T>(select: (queryStr: string, bindValues: PreparedBindValues | undefined) => ReadonlyArray<T>) => SqliteDb["select"];
|
7
|
+
//# sourceMappingURL=sqlite-db-helper.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sqlite-db-helper.d.ts","sourceRoot":"","sources":["../src/sqlite-db-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,WAAW,GACtB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,KACxD,IAAI,KACR,QAAQ,CAAC,SAAS,CAWpB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,KACzF,QAAQ,CAAC,QAAQ,CAanB,CAAA"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
2
|
+
import { getResultSchema, isQueryBuilder } from './schema/state/sqlite/query-builder/mod.js';
|
3
|
+
export const makeExecute = (execute) => {
|
4
|
+
return (...args) => {
|
5
|
+
const [queryStrOrQueryBuilder, bindValuesOrOptions, maybeOptions] = args;
|
6
|
+
if (isQueryBuilder(queryStrOrQueryBuilder)) {
|
7
|
+
const { query, bindValues } = queryStrOrQueryBuilder.asSql();
|
8
|
+
return execute(query, bindValues, bindValuesOrOptions);
|
9
|
+
}
|
10
|
+
else {
|
11
|
+
return execute(queryStrOrQueryBuilder, bindValuesOrOptions, maybeOptions);
|
12
|
+
}
|
13
|
+
};
|
14
|
+
};
|
15
|
+
export const makeSelect = (select) => {
|
16
|
+
return (...args) => {
|
17
|
+
const [queryStrOrQueryBuilder, maybeBindValues] = args;
|
18
|
+
if (isQueryBuilder(queryStrOrQueryBuilder)) {
|
19
|
+
const { query, bindValues } = queryStrOrQueryBuilder.asSql();
|
20
|
+
const resultSchema = getResultSchema(queryStrOrQueryBuilder);
|
21
|
+
const results = select(query, bindValues);
|
22
|
+
return Schema.decodeSync(resultSchema)(results);
|
23
|
+
}
|
24
|
+
else {
|
25
|
+
return select(queryStrOrQueryBuilder, maybeBindValues);
|
26
|
+
}
|
27
|
+
};
|
28
|
+
};
|
29
|
+
//# sourceMappingURL=sqlite-db-helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sqlite-db-helper.js","sourceRoot":"","sources":["../src/sqlite-db-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAG5F,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAIS,EACY,EAAE;IACvB,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,YAAY,CAAC,GAAG,IAAI,CAAA;QAExE,IAAI,cAAc,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;YAC5D,OAAO,OAAO,CAAC,KAAK,EAAE,UAA2C,EAAE,mBAAmB,CAAC,CAAA;QACzF,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAA0F,EACtE,EAAE;IACtB,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC,GAAG,IAAI,CAAA;QAEtD,IAAI,cAAc,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;YAC5D,MAAM,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,UAA2C,CAAC,CAAA;YAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAA;QACxD,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type
|
1
|
+
import { Option, type Runtime, type Scope } from '@livestore/utils/effect';
|
2
2
|
import { Effect, Subscribable } from '@livestore/utils/effect';
|
3
3
|
import * as otel from '@opentelemetry/api';
|
4
4
|
import type { ClientSession, UnexpectedError } from '../adapter-types.js';
|
@@ -23,6 +23,7 @@ export declare const makeClientSessionSyncProcessor: ({ schema, clientSession, r
|
|
23
23
|
materializeEvent: (eventDecoded: LiveStoreEvent.PartialAnyDecoded, options: {
|
24
24
|
otelContext: otel.Context;
|
25
25
|
withChangeset: boolean;
|
26
|
+
materializerHashLeader: Option.Option<number>;
|
26
27
|
}) => {
|
27
28
|
writeTables: Set<string>;
|
28
29
|
sessionChangeset: {
|
@@ -34,6 +35,7 @@ export declare const makeClientSessionSyncProcessor: ({ schema, clientSession, r
|
|
34
35
|
} | {
|
35
36
|
_tag: "unset";
|
36
37
|
};
|
38
|
+
materializerHash: Option.Option<number>;
|
37
39
|
};
|
38
40
|
rollback: (changeset: Uint8Array) => void;
|
39
41
|
refreshTables: (tables: Set<string>) => void;
|
@@ -54,6 +56,9 @@ export interface ClientSessionSyncProcessor {
|
|
54
56
|
writeTables: Set<string>;
|
55
57
|
};
|
56
58
|
boot: Effect.Effect<void, UnexpectedError, Scope.Scope>;
|
59
|
+
/**
|
60
|
+
* Only used for debugging / observability.
|
61
|
+
*/
|
57
62
|
syncState: Subscribable.Subscribable<SyncState.SyncState>;
|
58
63
|
debug: {
|
59
64
|
print: () => void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ClientSessionSyncProcessor.d.ts","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,
|
1
|
+
{"version":3,"file":"ClientSessionSyncProcessor.d.ts","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC1E,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,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KAAE,KAC1G;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;QACpH,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KACxC,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,0BAuRH,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;;OAEG;IACH,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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
/// <reference lib="dom" />
|
2
2
|
import { LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils';
|
3
|
+
import { Option } from '@livestore/utils/effect';
|
3
4
|
import { BucketQueue, Effect, FiberHandle, Queue, Schema, Stream, Subscribable } from '@livestore/utils/effect';
|
4
5
|
import * as otel from '@opentelemetry/api';
|
5
6
|
import * as EventSequenceNumber from '../schema/EventSequenceNumber.js';
|
@@ -29,6 +30,7 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
29
30
|
pending: [],
|
30
31
|
}),
|
31
32
|
};
|
33
|
+
/** Only used for debugging / observability, it's not relied upon for correctness of the sync processor. */
|
32
34
|
const syncStateUpdateQueue = Queue.unbounded().pipe(Effect.runSync);
|
33
35
|
const isClientEvent = (eventEncoded) => getEventDef(schema, eventEncoded.name).eventDef.options.clientOnly;
|
34
36
|
/** We're queuing push requests to reduce the number of messages sent to the leader by batching them */
|
@@ -66,16 +68,23 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
66
68
|
}
|
67
69
|
syncStateRef.current = mergeResult.newSyncState;
|
68
70
|
syncStateUpdateQueue.offer(mergeResult.newSyncState).pipe(Effect.runSync);
|
71
|
+
// Materialize events to state
|
69
72
|
const writeTables = new Set();
|
70
73
|
for (const event of mergeResult.newEvents) {
|
71
74
|
// TODO avoid encoding and decoding here again
|
72
75
|
const decodedEventDef = Schema.decodeSync(eventSchema)(event);
|
73
|
-
const
|
74
|
-
|
76
|
+
const { writeTables: newWriteTables, sessionChangeset, materializerHash, } = materializeEvent(decodedEventDef, {
|
77
|
+
otelContext,
|
78
|
+
withChangeset: true,
|
79
|
+
materializerHashLeader: Option.none(),
|
80
|
+
});
|
81
|
+
for (const table of newWriteTables) {
|
75
82
|
writeTables.add(table);
|
76
83
|
}
|
77
|
-
event.meta.sessionChangeset =
|
84
|
+
event.meta.sessionChangeset = sessionChangeset;
|
85
|
+
event.meta.materializerHashSession = materializerHash;
|
78
86
|
}
|
87
|
+
// Trigger push to leader
|
79
88
|
// console.debug('pushToLeader', encodedEventDefs.length, ...encodedEventDefs.map((_) => _.toJSON()))
|
80
89
|
BucketQueue.offerAll(leaderPushQueue, encodedEventDefs).pipe(Effect.runSync);
|
81
90
|
return { writeTables };
|
@@ -153,6 +162,7 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
153
162
|
event.meta.sessionChangeset = { _tag: 'unset' };
|
154
163
|
}
|
155
164
|
}
|
165
|
+
// Pushing rebased pending events to leader
|
156
166
|
yield* BucketQueue.offerAll(leaderPushQueue, mergeResult.newSyncState.pending);
|
157
167
|
}
|
158
168
|
else {
|
@@ -171,11 +181,16 @@ export const makeClientSessionSyncProcessor = ({ schema, clientSession, runtime,
|
|
171
181
|
for (const event of mergeResult.newEvents) {
|
172
182
|
// TODO apply changeset if available (will require tracking of write tables as well)
|
173
183
|
const decodedEventDef = Schema.decodeSync(eventSchema)(event);
|
174
|
-
const
|
175
|
-
|
184
|
+
const { writeTables: newWriteTables, sessionChangeset, materializerHash, } = materializeEvent(decodedEventDef, {
|
185
|
+
otelContext,
|
186
|
+
withChangeset: true,
|
187
|
+
materializerHashLeader: event.meta.materializerHashLeader,
|
188
|
+
});
|
189
|
+
for (const table of newWriteTables) {
|
176
190
|
writeTables.add(table);
|
177
191
|
}
|
178
|
-
event.meta.sessionChangeset =
|
192
|
+
event.meta.sessionChangeset = sessionChangeset;
|
193
|
+
event.meta.materializerHashSession = materializerHash;
|
179
194
|
}
|
180
195
|
refreshTables(writeTables);
|
181
196
|
}).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause((cause) => clientSession.shutdown(cause)))), Stream.runDrain, Effect.forever, // NOTE Whenever the leader changes, we need to re-start the stream
|
@@ -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;
|
1
|
+
{"version":3,"file":"ClientSessionSyncProcessor.js","sourceRoot":"","sources":["../../src/sync/ClientSessionSyncProcessor.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
export declare const liveStoreVersion: "0.3.1
|
1
|
+
export declare const liveStoreVersion: "0.3.1";
|
2
2
|
/**
|
3
3
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
4
4
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/dist/version.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,EAAG,
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAA;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA"}
|
package/dist/version.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
// TODO bring back when Expo and Playwright supports `with` imports
|
2
2
|
// import packageJson from '../package.json' with { type: 'json' }
|
3
3
|
// export const liveStoreVersion = packageJson.version
|
4
|
-
export const liveStoreVersion = '0.3.1
|
4
|
+
export const liveStoreVersion = '0.3.1';
|
5
5
|
/**
|
6
6
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
7
7
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/dist/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,kEAAkE;AAClE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,kEAAkE;AAClE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAA;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@livestore/common",
|
3
|
-
"version": "0.3.1
|
3
|
+
"version": "0.3.1",
|
4
4
|
"type": "module",
|
5
5
|
"sideEffects": false,
|
6
6
|
"exports": {
|
@@ -54,12 +54,12 @@
|
|
54
54
|
"graphology": "0.26.0-alpha1",
|
55
55
|
"graphology-dag": "0.4.1",
|
56
56
|
"graphology-types": "0.24.8",
|
57
|
-
"@livestore/
|
58
|
-
"@livestore/
|
57
|
+
"@livestore/webmesh": "0.3.1",
|
58
|
+
"@livestore/utils": "0.3.1"
|
59
59
|
},
|
60
60
|
"devDependencies": {
|
61
61
|
"vitest": "^3.1.2",
|
62
|
-
"@livestore/utils-dev": "0.3.1
|
62
|
+
"@livestore/utils-dev": "0.3.1"
|
63
63
|
},
|
64
64
|
"files": [
|
65
65
|
"package.json",
|
package/src/adapter-types.ts
CHANGED
@@ -4,6 +4,7 @@ import { Effect, Schema, Stream } from '@livestore/utils/effect'
|
|
4
4
|
import type * as Devtools from './devtools/mod.js'
|
5
5
|
import * as EventSequenceNumber from './schema/EventSequenceNumber.js'
|
6
6
|
import type { LiveStoreEvent, LiveStoreSchema } from './schema/mod.js'
|
7
|
+
import type { QueryBuilder } from './schema/state/sqlite/query-builder/api.js'
|
7
8
|
import type { LeaderAheadError } from './sync/sync.js'
|
8
9
|
import type { PayloadUpstream, SyncState } from './sync/syncstate.js'
|
9
10
|
import type { PreparedBindValues } from './util.js'
|
@@ -84,7 +85,11 @@ export interface SqliteDb<TReq = any, TMetadata extends TReq = TReq> {
|
|
84
85
|
bindValues?: PreparedBindValues | undefined,
|
85
86
|
options?: { onRowsChanged?: (rowsChanged: number) => void },
|
86
87
|
): void
|
88
|
+
execute(queryBuilder: QueryBuilder.Any, options?: { onRowsChanged?: (rowsChanged: number) => void }): void
|
89
|
+
|
87
90
|
select<T>(queryStr: string, bindValues?: PreparedBindValues | undefined): ReadonlyArray<T>
|
91
|
+
select<T>(queryBuilder: QueryBuilder<T, any, any>): ReadonlyArray<T>
|
92
|
+
|
88
93
|
export(): Uint8Array
|
89
94
|
import: (data: Uint8Array | SqliteDb<TReq>) => void
|
90
95
|
close(): void
|
package/src/index.ts
CHANGED
@@ -6,6 +6,7 @@ import {
|
|
6
6
|
Effect,
|
7
7
|
Exit,
|
8
8
|
FiberHandle,
|
9
|
+
Option,
|
9
10
|
OtelTracer,
|
10
11
|
Queue,
|
11
12
|
ReadonlyArray,
|
@@ -17,6 +18,7 @@ import type * as otel from '@opentelemetry/api'
|
|
17
18
|
|
18
19
|
import type { SqliteDb } from '../adapter-types.js'
|
19
20
|
import { UnexpectedError } from '../adapter-types.js'
|
21
|
+
import { makeMaterializerHash } from '../materializer-helper.js'
|
20
22
|
import type { LiveStoreSchema } from '../schema/mod.js'
|
21
23
|
import { EventSequenceNumber, getEventDef, LiveStoreEvent, SystemTables } from '../schema/mod.js'
|
22
24
|
import { LeaderAheadError } from '../sync/sync.js'
|
@@ -317,6 +319,7 @@ export const makeLeaderSyncProcessor = ({
|
|
317
319
|
syncStateSref,
|
318
320
|
localPushesLatch,
|
319
321
|
pullLatch,
|
322
|
+
dbState,
|
320
323
|
otelSpan,
|
321
324
|
initialBlockingSyncContext,
|
322
325
|
devtoolsLatch: ctxRef.current?.devtoolsLatch,
|
@@ -493,6 +496,7 @@ const backgroundApplyLocalPushes = ({
|
|
493
496
|
// TODO we still need to better understand and handle this scenario
|
494
497
|
if (LS_DEV && (yield* BucketQueue.size(localPushesQueue)) > 0) {
|
495
498
|
console.log('localPushesQueue is not empty', yield* BucketQueue.size(localPushesQueue))
|
499
|
+
// biome-ignore lint/suspicious/noDebugger: <explanation>
|
496
500
|
debugger
|
497
501
|
}
|
498
502
|
|
@@ -584,8 +588,9 @@ const materializeEventsBatch: MaterializeEventsBatch = ({ batchItems, deferreds
|
|
584
588
|
)
|
585
589
|
|
586
590
|
for (let i = 0; i < batchItems.length; i++) {
|
587
|
-
const { sessionChangeset } = yield* materializeEvent(batchItems[i]!)
|
591
|
+
const { sessionChangeset, hash } = yield* materializeEvent(batchItems[i]!)
|
588
592
|
batchItems[i]!.meta.sessionChangeset = sessionChangeset
|
593
|
+
batchItems[i]!.meta.materializerHashLeader = hash
|
589
594
|
|
590
595
|
if (deferreds?.[i] !== undefined) {
|
591
596
|
yield* Deferred.succeed(deferreds[i]!, void 0)
|
@@ -609,6 +614,7 @@ const backgroundBackendPulling = ({
|
|
609
614
|
isClientEvent,
|
610
615
|
restartBackendPushing,
|
611
616
|
otelSpan,
|
617
|
+
dbState,
|
612
618
|
syncStateSref,
|
613
619
|
localPushesLatch,
|
614
620
|
pullLatch,
|
@@ -626,6 +632,7 @@ const backgroundBackendPulling = ({
|
|
626
632
|
) => Effect.Effect<void, UnexpectedError, LeaderThreadCtx | HttpClient.HttpClient>
|
627
633
|
otelSpan: otel.Span | undefined
|
628
634
|
syncStateSref: SubscriptionRef.SubscriptionRef<SyncState.SyncState | undefined>
|
635
|
+
dbState: SqliteDb
|
629
636
|
localPushesLatch: Effect.Latch
|
630
637
|
pullLatch: Effect.Latch
|
631
638
|
devtoolsLatch: Effect.Latch | undefined
|
@@ -758,6 +765,8 @@ const backgroundBackendPulling = ({
|
|
758
765
|
|
759
766
|
const cursorInfo = yield* Eventlog.getSyncBackendCursorInfo(initialBackendHead)
|
760
767
|
|
768
|
+
const hashMaterializerResult = makeMaterializerHash({ schema, dbState })
|
769
|
+
|
761
770
|
yield* syncBackend.pull(cursorInfo).pipe(
|
762
771
|
// TODO only take from queue while connected
|
763
772
|
Stream.tap(({ batch, remaining }) =>
|
@@ -775,7 +784,13 @@ const backgroundBackendPulling = ({
|
|
775
784
|
yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true)
|
776
785
|
|
777
786
|
yield* onNewPullChunk(
|
778
|
-
batch.map((_) =>
|
787
|
+
batch.map((_) =>
|
788
|
+
LiveStoreEvent.EncodedWithMeta.fromGlobal(_.eventEncoded, {
|
789
|
+
syncMetadata: _.metadata,
|
790
|
+
materializerHashLeader: hashMaterializerResult(_.eventEncoded),
|
791
|
+
materializerHashSession: Option.none(),
|
792
|
+
}),
|
793
|
+
),
|
779
794
|
remaining,
|
780
795
|
)
|
781
796
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { LS_DEV, shouldNeverHappen } from '@livestore/utils'
|
2
|
-
import { Effect, ReadonlyArray, Schema } from '@livestore/utils/effect'
|
1
|
+
import { isDevEnv, LS_DEV, shouldNeverHappen } from '@livestore/utils'
|
2
|
+
import { Effect, Option, ReadonlyArray, Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import type
|
5
|
-
import {
|
4
|
+
import { type SqliteDb, UnexpectedError } from '../adapter-types.js'
|
5
|
+
import { getExecStatementsFromMaterializer, hashMaterializerResults } from '../materializer-helper.js'
|
6
6
|
import type { LiveStoreSchema } from '../schema/mod.js'
|
7
7
|
import { EventSequenceNumber, getEventDef, SystemTables } from '../schema/mod.js'
|
8
8
|
import { insertRow } from '../sql-queries/index.js'
|
@@ -13,13 +13,13 @@ import type { MaterializeEvent } from './types.js'
|
|
13
13
|
|
14
14
|
export const makeMaterializeEvent = ({
|
15
15
|
schema,
|
16
|
-
dbState
|
16
|
+
dbState,
|
17
17
|
dbEventlog,
|
18
18
|
}: {
|
19
19
|
schema: LiveStoreSchema
|
20
20
|
dbState: SqliteDb
|
21
21
|
dbEventlog: SqliteDb
|
22
|
-
}): Effect.Effect<MaterializeEvent,
|
22
|
+
}): Effect.Effect<MaterializeEvent, UnexpectedError> =>
|
23
23
|
Effect.gen(function* () {
|
24
24
|
const eventDefSchemaHashMap = new Map(
|
25
25
|
// TODO Running `Schema.hash` can be a bottleneck for larger schemas. There is an opportunity to run this
|
@@ -35,13 +35,26 @@ export const makeMaterializeEvent = ({
|
|
35
35
|
const eventName = eventEncoded.name
|
36
36
|
const { eventDef, materializer } = getEventDef(schema, eventName)
|
37
37
|
|
38
|
-
const execArgsArr =
|
38
|
+
const execArgsArr = getExecStatementsFromMaterializer({
|
39
39
|
eventDef,
|
40
40
|
materializer,
|
41
|
-
|
41
|
+
dbState,
|
42
42
|
event: { decoded: undefined, encoded: eventEncoded },
|
43
43
|
})
|
44
44
|
|
45
|
+
const materializerHash = isDevEnv() ? Option.some(hashMaterializerResults(execArgsArr)) : Option.none()
|
46
|
+
|
47
|
+
if (
|
48
|
+
materializerHash._tag === 'Some' &&
|
49
|
+
eventEncoded.meta.materializerHashSession._tag === 'Some' &&
|
50
|
+
eventEncoded.meta.materializerHashSession.value !== materializerHash.value
|
51
|
+
) {
|
52
|
+
yield* UnexpectedError.make({
|
53
|
+
cause: `Materializer hash mismatch detected for event "${eventEncoded.name}".`,
|
54
|
+
note: `Please make sure your event materializer is a pure function without side effects.`,
|
55
|
+
})
|
56
|
+
}
|
57
|
+
|
45
58
|
// NOTE we might want to bring this back if we want to debug no-op events
|
46
59
|
// const makeExecuteOptions = (statementSql: string, bindValues: any) => ({
|
47
60
|
// onRowsChanged: (rowsChanged: number) => {
|
@@ -53,12 +66,12 @@ export const makeMaterializeEvent = ({
|
|
53
66
|
|
54
67
|
// console.group('[@livestore/common:leader-thread:materializeEvent]', { eventName })
|
55
68
|
|
56
|
-
const session =
|
69
|
+
const session = dbState.session()
|
57
70
|
|
58
71
|
for (const { statementSql, bindValues } of execArgsArr) {
|
59
72
|
// console.debug(eventName, statementSql, bindValues)
|
60
73
|
// TODO use cached prepared statements instead of exec
|
61
|
-
yield* execSqlPrepared(
|
74
|
+
yield* execSqlPrepared(dbState, statementSql, bindValues)
|
62
75
|
}
|
63
76
|
|
64
77
|
const changeset = session.changeset()
|
@@ -66,7 +79,7 @@ export const makeMaterializeEvent = ({
|
|
66
79
|
|
67
80
|
// TODO use prepared statements
|
68
81
|
yield* execSql(
|
69
|
-
|
82
|
+
dbState,
|
70
83
|
...insertRow({
|
71
84
|
tableName: SystemTables.SESSION_CHANGESET_META_TABLE,
|
72
85
|
columns: SystemTables.sessionChangesetMetaTable.sqliteDef.columns,
|
@@ -107,6 +120,7 @@ export const makeMaterializeEvent = ({
|
|
107
120
|
debug: LS_DEV ? execArgsArr : null,
|
108
121
|
}
|
109
122
|
: { _tag: 'no-op' as const },
|
123
|
+
hash: materializerHash,
|
110
124
|
}
|
111
125
|
}).pipe(
|
112
126
|
Effect.withSpan(`@livestore/common:leader-thread:materializeEvent`, {
|
package/src/leader-thread/mod.ts
CHANGED
@@ -121,7 +121,10 @@ export type MaterializeEvent = (
|
|
121
121
|
skipEventlog?: boolean
|
122
122
|
},
|
123
123
|
) => Effect.Effect<
|
124
|
-
{
|
124
|
+
{
|
125
|
+
sessionChangeset: { _tag: 'sessionChangeset'; data: Uint8Array; debug: any } | { _tag: 'no-op' }
|
126
|
+
hash: Option.Option<number>
|
127
|
+
},
|
125
128
|
SqliteError | UnexpectedError
|
126
129
|
>
|
127
130
|
|