@livestore/common 0.4.0-dev.8 → 0.4.0
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/ClientSessionLeaderThreadProxy.d.ts +27 -12
- package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
- package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
- package/dist/WorkerTransportError.d.ts +11 -0
- package/dist/WorkerTransportError.d.ts.map +1 -0
- package/dist/WorkerTransportError.js +11 -0
- package/dist/WorkerTransportError.js.map +1 -0
- package/dist/adapter-types.d.ts +37 -7
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +27 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/bounded-collections.d.ts.map +1 -1
- package/dist/bounded-collections.js +6 -4
- package/dist/bounded-collections.js.map +1 -1
- package/dist/debug-info.d.ts.map +1 -1
- package/dist/debug-info.js +33 -6
- package/dist/debug-info.js.map +1 -1
- package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
- package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
- package/dist/devtools/devtools-compatibility.test.js +15 -0
- package/dist/devtools/devtools-compatibility.test.js.map +1 -0
- package/dist/devtools/devtools-messages-client-session.d.ts +55 -24
- package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-client-session.js +22 -5
- package/dist/devtools/devtools-messages-client-session.js.map +1 -1
- package/dist/devtools/devtools-messages-common.d.ts +11 -14
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +7 -9
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +65 -30
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.js +29 -11
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/devtools/devtools-sessioninfo.d.ts +14 -2
- package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
- package/dist/devtools/devtools-sessioninfo.js +7 -4
- package/dist/devtools/devtools-sessioninfo.js.map +1 -1
- package/dist/devtools/mod.d.ts +13 -2
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +10 -3
- package/dist/devtools/mod.js.map +1 -1
- package/dist/errors.d.ts +48 -18
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +20 -12
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +53 -6
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +325 -257
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/RejectedPushError.d.ts +107 -0
- package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
- package/dist/leader-thread/RejectedPushError.js +78 -0
- package/dist/leader-thread/RejectedPushError.js.map +1 -0
- package/dist/leader-thread/connection.js +1 -1
- package/dist/leader-thread/connection.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +19 -14
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +78 -18
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +90 -58
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +15 -7
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +49 -17
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
- package/dist/leader-thread/materialize-event.d.ts +1 -1
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +28 -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/recreate-db.d.ts +2 -2
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +6 -6
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -2
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -2
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/stream-events.d.ts +56 -0
- package/dist/leader-thread/stream-events.d.ts.map +1 -0
- package/dist/leader-thread/stream-events.js +167 -0
- package/dist/leader-thread/stream-events.js.map +1 -0
- package/dist/leader-thread/types.d.ts +95 -17
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js +13 -0
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/logging.d.ts +40 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +33 -0
- package/dist/logging.js.map +1 -0
- package/dist/make-client-session.d.ts +5 -3
- package/dist/make-client-session.d.ts.map +1 -1
- package/dist/make-client-session.js +7 -4
- package/dist/make-client-session.js.map +1 -1
- package/dist/materializer-helper.d.ts +6 -6
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +18 -8
- package/dist/materializer-helper.js.map +1 -1
- package/dist/otel.d.ts +2 -1
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +7 -2
- package/dist/otel.js.map +1 -1
- package/dist/rematerialize-from-eventlog.d.ts +3 -3
- package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
- package/dist/rematerialize-from-eventlog.js +40 -29
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef/define.d.ts +161 -0
- package/dist/schema/EventDef/define.d.ts.map +1 -0
- package/dist/schema/EventDef/define.js +140 -0
- package/dist/schema/EventDef/define.js.map +1 -0
- package/dist/schema/EventDef/deprecated.d.ts +99 -0
- package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
- package/dist/schema/EventDef/deprecated.js +144 -0
- package/dist/schema/EventDef/deprecated.js.map +1 -0
- package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
- package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
- package/dist/schema/EventDef/deprecated.test.js +95 -0
- package/dist/schema/EventDef/deprecated.test.js.map +1 -0
- package/dist/schema/EventDef/event-def.d.ts +110 -0
- package/dist/schema/EventDef/event-def.d.ts.map +1 -0
- package/dist/schema/EventDef/event-def.js +2 -0
- package/dist/schema/EventDef/event-def.js.map +1 -0
- package/dist/schema/EventDef/facts.d.ts +118 -0
- package/dist/schema/EventDef/facts.d.ts.map +1 -0
- package/dist/schema/EventDef/facts.js +53 -0
- package/dist/schema/EventDef/facts.js.map +1 -0
- package/dist/schema/EventDef/materializer.d.ts +155 -0
- package/dist/schema/EventDef/materializer.d.ts.map +1 -0
- package/dist/schema/EventDef/materializer.js +83 -0
- package/dist/schema/EventDef/materializer.js.map +1 -0
- package/dist/schema/EventDef/mod.d.ts +6 -0
- package/dist/schema/EventDef/mod.d.ts.map +1 -0
- package/dist/schema/EventDef/mod.js +6 -0
- package/dist/schema/EventDef/mod.js.map +1 -0
- package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
- package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/client.js +193 -0
- package/dist/schema/EventSequenceNumber/client.js.map +1 -0
- package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
- package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/global.js +14 -0
- package/dist/schema/EventSequenceNumber/global.js.map +1 -0
- package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
- package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/mod.js +37 -0
- package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
- package/dist/schema/EventSequenceNumber.test.js +44 -44
- package/dist/schema/EventSequenceNumber.test.js.map +1 -1
- package/dist/schema/{LiveStoreEvent.d.ts → LiveStoreEvent/client.d.ts} +102 -111
- package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/client.js +176 -0
- package/dist/schema/LiveStoreEvent/client.js.map +1 -0
- package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
- package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/client.test.js +111 -0
- package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
- package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
- package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
- package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
- package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
- package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/global.js +31 -0
- package/dist/schema/LiveStoreEvent/global.js.map +1 -0
- package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
- package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/input.js +26 -0
- package/dist/schema/LiveStoreEvent/input.js.map +1 -0
- package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
- package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/mod.js +5 -0
- package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
- package/dist/schema/events.d.ts +1 -1
- package/dist/schema/events.d.ts.map +1 -1
- package/dist/schema/events.js +1 -1
- package/dist/schema/events.js.map +1 -1
- package/dist/schema/mod.d.ts +6 -4
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +5 -4
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema.d.ts +16 -1
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +32 -4
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +2 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +36 -15
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +121 -2
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.js +1 -1
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.test.js +2 -2
- package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-def.js +96 -47
- package/dist/schema/state/sqlite/column-def.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.test.js +51 -12
- package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-spec.js +30 -12
- package/dist/schema/state/sqlite/column-spec.js.map +1 -1
- package/dist/schema/state/sqlite/column-spec.test.js +24 -15
- package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +2 -2
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +16 -10
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +15 -4
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +2 -2
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +5 -7
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +51 -22
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.js +99 -22
- package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +28 -15
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +231 -93
- package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
- package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.js +24 -14
- package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
- package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
- package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
- package/dist/schema/state/sqlite/{system-tables.d.ts → system-tables/eventlog-tables.d.ts} +21 -450
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
- package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
- package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
- package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +456 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.js +55 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
- package/dist/schema/state/sqlite/table-def.d.ts +5 -3
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +1 -1
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.js +92 -3
- package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
- package/dist/schema/unknown-events.d.ts +47 -0
- package/dist/schema/unknown-events.d.ts.map +1 -0
- package/dist/schema/unknown-events.js +69 -0
- package/dist/schema/unknown-events.js.map +1 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
- package/dist/schema-management/common.js +2 -2
- package/dist/schema-management/common.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +32 -2
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +38 -6
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/validate-schema.d.ts +3 -3
- package/dist/schema-management/validate-schema.d.ts.map +1 -1
- package/dist/schema-management/validate-schema.js +2 -2
- package/dist/schema-management/validate-schema.js.map +1 -1
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js +18 -6
- package/dist/sql-queries/sql-queries.js.map +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sql-queries/sql-query-builder.js.map +1 -1
- package/dist/sqlite-db-helper.js +3 -3
- package/dist/sqlite-db-helper.js.map +1 -1
- package/dist/sqlite-types.d.ts +5 -5
- package/dist/sqlite-types.d.ts.map +1 -1
- package/dist/sqlite-types.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +12 -12
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +99 -114
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/errors.d.ts +0 -33
- package/dist/sync/errors.d.ts.map +1 -1
- package/dist/sync/errors.js +5 -22
- package/dist/sync/errors.js.map +1 -1
- 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/mock-sync-backend.d.ts +10 -8
- package/dist/sync/mock-sync-backend.d.ts.map +1 -1
- package/dist/sync/mock-sync-backend.js +71 -69
- package/dist/sync/mock-sync-backend.js.map +1 -1
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/compact-events.js +11 -12
- 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 +7 -8
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +54 -15
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +198 -9
- package/dist/sync/next/history-dag-common.js.map +1 -1
- package/dist/sync/next/history-dag.d.ts.map +1 -1
- package/dist/sync/next/history-dag.js +11 -11
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +5 -5
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js +6 -6
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/compact-events.calculator.test.js +2 -2
- package/dist/sync/next/test/compact-events.calculator.test.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 -2
- package/dist/sync/next/test/compact-events.test.js.map +1 -1
- package/dist/sync/next/test/event-fixtures.d.ts +2 -2
- package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
- package/dist/sync/next/test/event-fixtures.js +11 -11
- package/dist/sync/next/test/event-fixtures.js.map +1 -1
- package/dist/sync/sync-backend-kv.d.ts +3 -3
- package/dist/sync/sync-backend-kv.d.ts.map +1 -1
- package/dist/sync/sync-backend-kv.js +3 -3
- package/dist/sync/sync-backend-kv.js.map +1 -1
- package/dist/sync/sync-backend.d.ts +33 -13
- package/dist/sync/sync-backend.d.ts.map +1 -1
- package/dist/sync/sync-backend.js +38 -1
- package/dist/sync/sync-backend.js.map +1 -1
- package/dist/sync/sync.d.ts +23 -2
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/syncstate.d.ts +55 -55
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +80 -98
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +221 -132
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/transport-chunking.d.ts +36 -0
- package/dist/sync/transport-chunking.d.ts.map +1 -0
- package/dist/sync/transport-chunking.js +56 -0
- package/dist/sync/transport-chunking.js.map +1 -0
- package/dist/sync/validate-push-payload.d.ts +2 -2
- package/dist/sync/validate-push-payload.d.ts.map +1 -1
- package/dist/sync/validate-push-payload.js +4 -6
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/testing/event-factory.d.ts +68 -0
- package/dist/testing/event-factory.d.ts.map +1 -0
- package/dist/testing/event-factory.js +78 -0
- package/dist/testing/event-factory.js.map +1 -0
- package/dist/testing/mod.d.ts +2 -0
- package/dist/testing/mod.d.ts.map +1 -0
- package/dist/testing/mod.js +2 -0
- package/dist/testing/mod.js.map +1 -0
- package/dist/util.js +2 -2
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +24 -5
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +25 -8
- package/dist/version.js.map +1 -1
- package/package.json +69 -16
- package/src/ClientSessionLeaderThreadProxy.ts +27 -12
- package/src/WorkerTransportError.ts +12 -0
- package/src/adapter-types.ts +50 -7
- package/src/bounded-collections.ts +6 -5
- package/src/debug-info.ts +37 -6
- package/src/devtools/devtools-compatibility.test.ts +18 -0
- package/src/devtools/devtools-messages-client-session.ts +22 -4
- package/src/devtools/devtools-messages-common.ts +7 -12
- package/src/devtools/devtools-messages-leader.ts +29 -10
- package/src/devtools/devtools-sessioninfo.ts +8 -5
- package/src/devtools/mod.ts +11 -2
- package/src/errors.ts +32 -24
- package/src/index.ts +4 -1
- package/src/leader-thread/LeaderSyncProcessor.ts +523 -373
- package/src/leader-thread/RejectedPushError.ts +106 -0
- package/src/leader-thread/connection.ts +1 -1
- package/src/leader-thread/eventlog.ts +112 -39
- package/src/leader-thread/leader-worker-devtools.ts +201 -120
- package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
- package/src/leader-thread/make-leader-thread-layer.ts +125 -40
- package/src/leader-thread/materialize-event.ts +40 -10
- package/src/leader-thread/mod.ts +1 -0
- package/src/leader-thread/recreate-db.ts +7 -7
- package/src/leader-thread/shutdown-channel.ts +4 -8
- package/src/leader-thread/stream-events.ts +206 -0
- package/src/leader-thread/types.ts +68 -18
- package/src/logging.ts +62 -0
- package/src/make-client-session.ts +11 -5
- package/src/materializer-helper.ts +27 -16
- package/src/otel.ts +13 -2
- package/src/rematerialize-from-eventlog.ts +61 -51
- package/src/schema/EventDef/define.ts +217 -0
- package/src/schema/EventDef/deprecated.test.ts +129 -0
- package/src/schema/EventDef/deprecated.ts +175 -0
- package/src/schema/EventDef/event-def.ts +125 -0
- package/src/schema/EventDef/facts.ts +135 -0
- package/src/schema/EventDef/materializer.ts +172 -0
- package/src/schema/EventDef/mod.ts +5 -0
- package/src/schema/EventSequenceNumber/client.ts +257 -0
- package/src/schema/EventSequenceNumber/global.ts +19 -0
- package/src/schema/EventSequenceNumber/mod.ts +37 -0
- package/src/schema/EventSequenceNumber.test.ts +72 -53
- package/src/schema/LiveStoreEvent/client.test.ts +129 -0
- package/src/schema/LiveStoreEvent/client.ts +235 -0
- package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
- package/src/schema/LiveStoreEvent/global.ts +45 -0
- package/src/schema/LiveStoreEvent/input.ts +63 -0
- package/src/schema/LiveStoreEvent/mod.ts +4 -0
- package/src/schema/events.ts +1 -1
- package/src/schema/mod.ts +6 -4
- package/src/schema/schema.ts +46 -5
- package/src/schema/state/sqlite/client-document-def.test.ts +144 -5
- package/src/schema/state/sqlite/client-document-def.ts +47 -34
- package/src/schema/state/sqlite/column-annotations.test.ts +3 -2
- package/src/schema/state/sqlite/column-annotations.ts +2 -1
- package/src/schema/state/sqlite/column-def.test.ts +66 -12
- package/src/schema/state/sqlite/column-def.ts +119 -47
- package/src/schema/state/sqlite/column-spec.test.ts +32 -17
- package/src/schema/state/sqlite/column-spec.ts +37 -11
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +2 -2
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +2 -1
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +41 -15
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +13 -19
- package/src/schema/state/sqlite/mod.ts +7 -8
- package/src/schema/state/sqlite/query-builder/api.ts +55 -17
- package/src/schema/state/sqlite/query-builder/astToSql.ts +110 -21
- package/src/schema/state/sqlite/query-builder/impl.test.ts +267 -93
- package/src/schema/state/sqlite/query-builder/impl.ts +26 -13
- package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
- package/src/schema/state/sqlite/schema-helpers.ts +30 -22
- package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
- package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
- package/src/schema/state/sqlite/system-tables/state-tables.ts +69 -0
- package/src/schema/state/sqlite/table-def.test.ts +114 -3
- package/src/schema/state/sqlite/table-def.ts +16 -22
- package/src/schema/unknown-events.ts +131 -0
- package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
- package/src/schema-management/common.ts +2 -2
- package/src/schema-management/migrations.ts +42 -9
- package/src/schema-management/validate-schema.ts +3 -3
- package/src/sql-queries/sql-queries.ts +18 -6
- package/src/sql-queries/sql-query-builder.ts +1 -0
- package/src/sqlite-db-helper.ts +3 -3
- package/src/sqlite-types.ts +6 -5
- package/src/sync/ClientSessionSyncProcessor.ts +152 -142
- package/src/sync/errors.ts +12 -24
- package/src/sync/index.ts +2 -0
- package/src/sync/mock-sync-backend.ts +146 -104
- package/src/sync/next/compact-events.ts +10 -11
- package/src/sync/next/facts.ts +13 -14
- package/src/sync/next/history-dag-common.ts +280 -26
- package/src/sync/next/history-dag.ts +17 -13
- package/src/sync/next/rebase-events.ts +12 -12
- package/src/sync/next/test/compact-events.calculator.test.ts +3 -2
- package/src/sync/next/test/compact-events.test.ts +4 -3
- package/src/sync/next/test/event-fixtures.ts +13 -13
- package/src/sync/sync-backend-kv.ts +4 -3
- package/src/sync/sync-backend.ts +66 -17
- package/src/sync/sync.ts +24 -2
- package/src/sync/syncstate.test.ts +583 -419
- package/src/sync/syncstate.ts +127 -122
- package/src/sync/transport-chunking.ts +90 -0
- package/src/sync/validate-push-payload.ts +6 -8
- package/src/testing/event-factory.ts +131 -0
- package/src/testing/mod.ts +1 -0
- package/src/util.ts +2 -2
- package/src/version.ts +33 -8
- package/dist/schema/EventDef.d.ts +0 -126
- package/dist/schema/EventDef.d.ts.map +0 -1
- package/dist/schema/EventDef.js +0 -46
- package/dist/schema/EventDef.js.map +0 -1
- package/dist/schema/EventSequenceNumber.d.ts +0 -80
- package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
- package/dist/schema/EventSequenceNumber.js +0 -139
- package/dist/schema/EventSequenceNumber.js.map +0 -1
- package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
- package/dist/schema/LiveStoreEvent.js +0 -147
- package/dist/schema/LiveStoreEvent.js.map +0 -1
- package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
- package/dist/schema/state/sqlite/system-tables.js +0 -81
- package/dist/schema/state/sqlite/system-tables.js.map +0 -1
- package/dist/sync/next/graphology.d.ts +0 -8
- package/dist/sync/next/graphology.d.ts.map +0 -1
- package/dist/sync/next/graphology.js +0 -30
- package/dist/sync/next/graphology.js.map +0 -1
- package/dist/sync/next/graphology_.d.ts +0 -3
- package/dist/sync/next/graphology_.d.ts.map +0 -1
- package/dist/sync/next/graphology_.js +0 -3
- package/dist/sync/next/graphology_.js.map +0 -1
- package/src/schema/EventDef.ts +0 -222
- package/src/schema/EventSequenceNumber.ts +0 -199
- package/src/schema/LiveStoreEvent.ts +0 -286
- package/src/schema/state/sqlite/system-tables.ts +0 -106
- package/src/sync/next/ambient.d.ts +0 -3
- package/src/sync/next/graphology.ts +0 -41
- package/src/sync/next/graphology_.ts +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, KeyValueStore, Option } from '@livestore/utils/effect';
|
|
2
|
-
import {
|
|
2
|
+
import { UnknownError } from '../errors.ts';
|
|
3
3
|
export declare const makeBackendIdHelper: Effect.Effect<{
|
|
4
|
-
lazySet: (backendId: string) => Effect.Effect<void,
|
|
4
|
+
lazySet: (backendId: string) => Effect.Effect<void, UnknownError, never>;
|
|
5
5
|
get: () => Option.Option<string>;
|
|
6
|
-
},
|
|
6
|
+
}, UnknownError, KeyValueStore.KeyValueStore>;
|
|
7
7
|
//# sourceMappingURL=sync-backend-kv.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-backend-kv.d.ts","sourceRoot":"","sources":["../../src/sync/sync-backend-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-backend-kv.d.ts","sourceRoot":"","sources":["../../src/sync/sync-backend-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,mBAAmB;yBAMG,MAAM;;6CAYvC,CAAA"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Effect, KeyValueStore, Option } from '@livestore/utils/effect';
|
|
2
|
-
import {
|
|
2
|
+
import { UnknownError } from "../errors.js";
|
|
3
3
|
export const makeBackendIdHelper = Effect.gen(function* () {
|
|
4
4
|
const kv = yield* KeyValueStore.KeyValueStore;
|
|
5
5
|
const backendIdKey = `backendId`;
|
|
6
|
-
const backendIdRef = { current: yield* kv.get(backendIdKey).pipe(
|
|
6
|
+
const backendIdRef = { current: yield* kv.get(backendIdKey).pipe(UnknownError.mapToUnknownError) };
|
|
7
7
|
const setBackendId = (backendId) => Effect.gen(function* () {
|
|
8
8
|
if (backendIdRef.current._tag === 'None' || backendIdRef.current.value !== backendId) {
|
|
9
9
|
backendIdRef.current = Option.some(backendId);
|
|
10
10
|
yield* kv.set(backendIdKey, backendId);
|
|
11
11
|
}
|
|
12
|
-
}).pipe(
|
|
12
|
+
}).pipe(UnknownError.mapToUnknownError);
|
|
13
13
|
return {
|
|
14
14
|
lazySet: setBackendId,
|
|
15
15
|
get: () => backendIdRef.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-backend-kv.js","sourceRoot":"","sources":["../../src/sync/sync-backend-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-backend-kv.js","sourceRoot":"","sources":["../../src/sync/sync-backend-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,aAAa,CAAA;IAE7C,MAAM,YAAY,GAAG,WAAW,CAAA;IAChC,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAA;IAElG,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE,CACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrF,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7C,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QACxC,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAEzC,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO;KAChC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { type Cause, type Effect, type HttpClient, type KeyValueStore, Option, Schema, type Scope, type Stream, type SubscriptionRef } from '@livestore/utils/effect';
|
|
2
|
-
import type {
|
|
3
|
-
import type * as LiveStoreEvent from '../schema/LiveStoreEvent.ts';
|
|
2
|
+
import type { UnknownError } from '../adapter-types.ts';
|
|
3
|
+
import type * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts';
|
|
4
4
|
import type { EventSequenceNumber } from '../schema/mod.ts';
|
|
5
|
-
import type {
|
|
5
|
+
import type { BackendIdMismatchError, IsOfflineError, ServerAheadError } from './errors.ts';
|
|
6
6
|
export * from './sync-backend-kv.ts';
|
|
7
7
|
/**
|
|
8
8
|
* Those arguments can be used to implement multi-tenancy etc and are passed in from the store.
|
|
9
9
|
*/
|
|
10
|
-
export type MakeBackendArgs = {
|
|
10
|
+
export type MakeBackendArgs<TPayload = Schema.JsonValue> = {
|
|
11
11
|
storeId: string;
|
|
12
12
|
clientId: string;
|
|
13
|
-
payload:
|
|
13
|
+
payload: TPayload | undefined;
|
|
14
14
|
};
|
|
15
|
-
export type SyncBackendConstructor<TSyncMetadata = Schema.JsonValue> = (args: MakeBackendArgs) => Effect.Effect<SyncBackend<TSyncMetadata>,
|
|
15
|
+
export type SyncBackendConstructor<TSyncMetadata = Schema.JsonValue, TPayload = Schema.JsonValue> = (args: MakeBackendArgs<TPayload>) => Effect.Effect<SyncBackend<TSyncMetadata>, UnknownError, Scope.Scope | HttpClient.HttpClient | KeyValueStore.KeyValueStore>;
|
|
16
16
|
export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
|
|
17
17
|
/**
|
|
18
18
|
* Can be implemented to prepare a connection to the sync backend to speed up the first pull/push.
|
|
19
19
|
*/
|
|
20
|
-
connect: Effect.Effect<void, IsOfflineError |
|
|
20
|
+
connect: Effect.Effect<void, IsOfflineError | UnknownError, Scope.Scope>;
|
|
21
21
|
pull: (cursor: Option.Option<{
|
|
22
|
-
eventSequenceNumber: EventSequenceNumber.
|
|
22
|
+
eventSequenceNumber: EventSequenceNumber.Global.Type;
|
|
23
23
|
/** Metadata is needed by some sync backends */
|
|
24
24
|
metadata: Option.Option<TSyncMetadata>;
|
|
25
25
|
}>, options?: {
|
|
@@ -29,15 +29,15 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
|
|
|
29
29
|
* @default false
|
|
30
30
|
*/
|
|
31
31
|
live?: boolean;
|
|
32
|
-
}) => Stream.Stream<PullResItem<TSyncMetadata>, IsOfflineError |
|
|
32
|
+
}) => Stream.Stream<PullResItem<TSyncMetadata>, IsOfflineError | BackendIdMismatchError | UnknownError>;
|
|
33
33
|
push: (
|
|
34
34
|
/**
|
|
35
35
|
* Constraints for batch:
|
|
36
36
|
* - Number of events: 1-100
|
|
37
37
|
* - sequence numbers must be in ascending order
|
|
38
38
|
* */
|
|
39
|
-
batch: ReadonlyArray<LiveStoreEvent.
|
|
40
|
-
ping: Effect.Effect<void, IsOfflineError |
|
|
39
|
+
batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>) => Effect.Effect<void, IsOfflineError | BackendIdMismatchError | UnknownError | ServerAheadError>;
|
|
40
|
+
ping: Effect.Effect<void, IsOfflineError | UnknownError | Cause.TimeoutException>;
|
|
41
41
|
isConnected: SubscriptionRef.SubscriptionRef<boolean>;
|
|
42
42
|
/**
|
|
43
43
|
* Metadata describing the sync backend. (Currently only used by devtools.)
|
|
@@ -59,6 +59,26 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
|
|
|
59
59
|
pullLive: boolean;
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Connectivity metadata emitted by sync backends.
|
|
64
|
+
*/
|
|
65
|
+
export declare const NetworkStatus: Schema.Struct<{
|
|
66
|
+
/** True when the upstream sync backend is reachable and responding to health checks. */
|
|
67
|
+
isConnected: typeof Schema.Boolean;
|
|
68
|
+
/** Unix epoch timestamp (ms) of the latest connectivity state transition. */
|
|
69
|
+
timestampMs: typeof Schema.Number;
|
|
70
|
+
/** Devtools specific metadata describing simulator overrides. */
|
|
71
|
+
devtools: Schema.Struct<{
|
|
72
|
+
/** Indicates whether the devtools latch forced the client into an offline state. */
|
|
73
|
+
latchClosed: typeof Schema.Boolean;
|
|
74
|
+
}>;
|
|
75
|
+
}>;
|
|
76
|
+
export type NetworkStatus = typeof NetworkStatus.Type;
|
|
77
|
+
/**
|
|
78
|
+
* Runtime type guard for SyncBackend objects.
|
|
79
|
+
* Performs lightweight structural checks on the object shape.
|
|
80
|
+
*/
|
|
81
|
+
export declare const isSyncBackend: (value: unknown) => value is SyncBackend<any>;
|
|
62
82
|
export declare const PullResPageInfo: Schema.Union<[Schema.TaggedStruct<"MoreUnknown", {}>, Schema.TaggedStruct<"MoreKnown", {
|
|
63
83
|
remaining: typeof Schema.Number;
|
|
64
84
|
}>, Schema.TaggedStruct<"NoMore", {}>]>;
|
|
@@ -69,7 +89,7 @@ export declare const pageInfoMoreKnown: (remaining: number) => PullResPageInfo;
|
|
|
69
89
|
export declare const pullResItemEmpty: <TSyncMetadata = Schema.JsonValue>() => PullResItem<TSyncMetadata>;
|
|
70
90
|
export interface PullResItem<TSyncMetadata = Schema.JsonValue> {
|
|
71
91
|
batch: ReadonlyArray<{
|
|
72
|
-
eventEncoded: LiveStoreEvent.
|
|
92
|
+
eventEncoded: LiveStoreEvent.Global.Encoded;
|
|
73
93
|
metadata: Option.Option<TSyncMetadata>;
|
|
74
94
|
}>;
|
|
75
95
|
pageInfo: PullResPageInfo;
|
|
@@ -79,7 +99,7 @@ export declare const of: <TSyncMetadata = Schema.JsonValue>(obj: SyncBackend<TSy
|
|
|
79
99
|
* Useful to continue pulling from the last event in the batch.
|
|
80
100
|
*/
|
|
81
101
|
export declare const cursorFromPullResItem: <TSyncMetadata = Schema.JsonValue>(item: PullResItem<TSyncMetadata>) => Option.Option<{
|
|
82
|
-
eventSequenceNumber: EventSequenceNumber.
|
|
102
|
+
eventSequenceNumber: EventSequenceNumber.Global.Type;
|
|
83
103
|
metadata: Option.Option<TSyncMetadata>;
|
|
84
104
|
}>;
|
|
85
105
|
//# sourceMappingURL=sync-backend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-backend.d.ts","sourceRoot":"","sources":["../../src/sync/sync-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,MAAM,EACN,MAAM,EACN,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-backend.d.ts","sourceRoot":"","sources":["../../src/sync/sync-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
import { Option, Schema, } from '@livestore/utils/effect';
|
|
2
2
|
export * from "./sync-backend-kv.js";
|
|
3
|
+
/**
|
|
4
|
+
* Connectivity metadata emitted by sync backends.
|
|
5
|
+
*/
|
|
6
|
+
export const NetworkStatus = Schema.Struct({
|
|
7
|
+
/** True when the upstream sync backend is reachable and responding to health checks. */
|
|
8
|
+
isConnected: Schema.Boolean,
|
|
9
|
+
/** Unix epoch timestamp (ms) of the latest connectivity state transition. */
|
|
10
|
+
timestampMs: Schema.Number,
|
|
11
|
+
/** Devtools specific metadata describing simulator overrides. */
|
|
12
|
+
devtools: Schema.Struct({
|
|
13
|
+
/** Indicates whether the devtools latch forced the client into an offline state. */
|
|
14
|
+
latchClosed: Schema.Boolean,
|
|
15
|
+
}),
|
|
16
|
+
}).annotations({ title: 'NetworkStatus' });
|
|
17
|
+
/**
|
|
18
|
+
* Runtime type guard for SyncBackend objects.
|
|
19
|
+
* Performs lightweight structural checks on the object shape.
|
|
20
|
+
*/
|
|
21
|
+
export const isSyncBackend = (value) => {
|
|
22
|
+
if (typeof value !== 'object' || value === null)
|
|
23
|
+
return false;
|
|
24
|
+
const v = value;
|
|
25
|
+
const hasCoreFns = typeof v.connect === 'function' &&
|
|
26
|
+
typeof v.pull === 'function' &&
|
|
27
|
+
typeof v.push === 'function' &&
|
|
28
|
+
typeof v.ping === 'function';
|
|
29
|
+
const hasSupports = typeof v.supports === 'object' &&
|
|
30
|
+
v.supports !== null &&
|
|
31
|
+
typeof v.supports.pullPageInfoKnown === 'boolean' &&
|
|
32
|
+
typeof v.supports.pullLive === 'boolean';
|
|
33
|
+
const hasMetadata = typeof v.metadata === 'object' &&
|
|
34
|
+
v.metadata !== null &&
|
|
35
|
+
typeof v.metadata.name === 'string' &&
|
|
36
|
+
typeof v.metadata.description === 'string';
|
|
37
|
+
const hasIsConnected = typeof v.isConnected === 'object' && v.isConnected !== null;
|
|
38
|
+
return hasCoreFns && hasSupports && hasMetadata && hasIsConnected;
|
|
39
|
+
};
|
|
3
40
|
export const PullResPageInfo = Schema.Union(Schema.TaggedStruct('MoreUnknown', {}), Schema.TaggedStruct('MoreKnown', {
|
|
4
41
|
remaining: Schema.Number,
|
|
5
42
|
}), Schema.TaggedStruct('NoMore', {}));
|
|
@@ -16,7 +53,7 @@ export const of = (obj) => obj;
|
|
|
16
53
|
*/
|
|
17
54
|
export const cursorFromPullResItem = (item) => {
|
|
18
55
|
const lastEvent = item.batch.at(-1);
|
|
19
|
-
if (
|
|
56
|
+
if (lastEvent == null) {
|
|
20
57
|
return Option.none();
|
|
21
58
|
}
|
|
22
59
|
return Option.some({ eventSequenceNumber: lastEvent.eventEncoded.seqNum, metadata: lastEvent.metadata });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-backend.js","sourceRoot":"","sources":["../../src/sync/sync-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EACN,MAAM,GAIP,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-backend.js","sourceRoot":"","sources":["../../src/sync/sync-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/sync.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export * from './errors.ts';
|
|
2
2
|
export * as SyncBackend from './sync-backend.ts';
|
|
3
|
+
import type { Schema } from '@livestore/utils/effect';
|
|
3
4
|
import type { InitialSyncOptions } from '../leader-thread/types.ts';
|
|
4
5
|
import type { SyncBackendConstructor } from './sync-backend.ts';
|
|
5
|
-
export type SyncOptions = {
|
|
6
|
-
backend?: SyncBackendConstructor<any>;
|
|
6
|
+
export type SyncOptions<TPayload = Schema.JsonValue> = {
|
|
7
|
+
backend?: SyncBackendConstructor<any, TPayload>;
|
|
7
8
|
/** @default { _tag: 'Skip' } */
|
|
8
9
|
initialSyncOptions?: InitialSyncOptions;
|
|
9
10
|
/**
|
|
@@ -16,6 +17,26 @@ export type SyncOptions = {
|
|
|
16
17
|
* @default 'ignore'
|
|
17
18
|
* */
|
|
18
19
|
onSyncError?: 'shutdown' | 'ignore';
|
|
20
|
+
/**
|
|
21
|
+
* What to do when the sync backend identity has changed (i.e. the backend was reset).
|
|
22
|
+
*
|
|
23
|
+
* This commonly happens during development when:
|
|
24
|
+
* - The sync backend state is deleted (e.g. `.wrangler/state` for Cloudflare)
|
|
25
|
+
* - Running with a `--reset` flag
|
|
26
|
+
* - Schema changes require re-backfilling data
|
|
27
|
+
*
|
|
28
|
+
* Options:
|
|
29
|
+
* - `'reset'`: Clear local storage (eventlog and state databases) and shutdown.
|
|
30
|
+
* The app will need to restart and will sync fresh data from the backend.
|
|
31
|
+
* This is the recommended option for development.
|
|
32
|
+
* - `'shutdown'`: Shutdown without clearing local storage.
|
|
33
|
+
* On restart, the client will still have stale data and hit the same error.
|
|
34
|
+
* - `'ignore'`: Log the error and continue running.
|
|
35
|
+
* The client will show stale data but keep running (effectively offline mode).
|
|
36
|
+
*
|
|
37
|
+
* @default 'reset'
|
|
38
|
+
*/
|
|
39
|
+
onBackendIdMismatch?: 'reset' | 'shutdown' | 'ignore';
|
|
19
40
|
/**
|
|
20
41
|
* Whether the sync backend should reactively pull new events from the sync backend
|
|
21
42
|
* @default true
|
package/dist/sync/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,MAAM,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI;IACrD,OAAO,CAAC,EAAE,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC/C,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;;;;;;;SAQK;IACL,WAAW,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAA;IACnC;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAA;IACrD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA"}
|
package/dist/sync/syncstate.d.ts
CHANGED
|
@@ -1,33 +1,42 @@
|
|
|
1
|
-
import { Schema } from '@livestore/utils/effect';
|
|
2
|
-
import * as
|
|
1
|
+
import { Effect, Schema } from '@livestore/utils/effect';
|
|
2
|
+
import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts';
|
|
3
|
+
import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts';
|
|
3
4
|
declare const SyncState_base: Schema.Class<SyncState, {
|
|
4
|
-
pending: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
5
|
+
pending: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
5
6
|
/** What this node expects the next upstream node to have as its own local head */
|
|
6
7
|
upstreamHead: Schema.Struct<{
|
|
7
8
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
8
9
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
9
10
|
rebaseGeneration: typeof Schema.Int;
|
|
10
|
-
}
|
|
11
|
+
}> & {
|
|
12
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
13
|
+
};
|
|
11
14
|
/** Equivalent to `pending.at(-1)?.id` if there are pending events */
|
|
12
15
|
localHead: Schema.Struct<{
|
|
13
16
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
14
17
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
15
18
|
rebaseGeneration: typeof Schema.Int;
|
|
16
|
-
}
|
|
19
|
+
}> & {
|
|
20
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
21
|
+
};
|
|
17
22
|
}, Schema.Struct.Encoded<{
|
|
18
|
-
pending: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
23
|
+
pending: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
19
24
|
/** What this node expects the next upstream node to have as its own local head */
|
|
20
25
|
upstreamHead: Schema.Struct<{
|
|
21
26
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
22
27
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
23
28
|
rebaseGeneration: typeof Schema.Int;
|
|
24
|
-
}
|
|
29
|
+
}> & {
|
|
30
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
31
|
+
};
|
|
25
32
|
/** Equivalent to `pending.at(-1)?.id` if there are pending events */
|
|
26
33
|
localHead: Schema.Struct<{
|
|
27
34
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
28
35
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
29
36
|
rebaseGeneration: typeof Schema.Int;
|
|
30
|
-
}
|
|
37
|
+
}> & {
|
|
38
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
39
|
+
};
|
|
31
40
|
}>, never, {
|
|
32
41
|
readonly upstreamHead: {
|
|
33
42
|
readonly global: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
|
|
@@ -41,7 +50,7 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
41
50
|
readonly rebaseGeneration: number;
|
|
42
51
|
};
|
|
43
52
|
} & {
|
|
44
|
-
readonly pending: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
53
|
+
readonly pending: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
45
54
|
}, {}, {}>;
|
|
46
55
|
/**
|
|
47
56
|
* SyncState represents the current sync state of a sync node relative to an upstream node.
|
|
@@ -54,7 +63,7 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
54
63
|
* +------------------------+
|
|
55
64
|
* ▼ ▼
|
|
56
65
|
* Upstream Head Local Head
|
|
57
|
-
*
|
|
66
|
+
* e1 e1.1, e1.2, e2
|
|
58
67
|
* ```
|
|
59
68
|
*
|
|
60
69
|
* **Pending Events**: Events awaiting acknowledgment from the upstream.
|
|
@@ -70,7 +79,7 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
70
79
|
* Invariants:
|
|
71
80
|
* 1. **Chain Continuity**: Each event must reference its immediate parent.
|
|
72
81
|
* 2. **Head Ordering**: Upstream Head ≤ Local Head.
|
|
73
|
-
* 3. **Event number sequence**: Must follow the pattern
|
|
82
|
+
* 3. **Event number sequence**: Must follow the pattern e1→e1.1→e1.2→e2.
|
|
74
83
|
*
|
|
75
84
|
* A few further notes to help form an intuition:
|
|
76
85
|
* - The goal is to keep the pending events as small as possible (i.e. to have synced with the next upstream node)
|
|
@@ -85,9 +94,9 @@ export declare class SyncState extends SyncState_base {
|
|
|
85
94
|
}
|
|
86
95
|
declare const PayloadUpstreamRebase_base: Schema.TaggedStruct<"upstream-rebase", {
|
|
87
96
|
/** Events which need to be rolled back */
|
|
88
|
-
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
97
|
+
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
89
98
|
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
90
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
99
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
91
100
|
}>;
|
|
92
101
|
/**
|
|
93
102
|
* This payload propagates a rebase from the upstream node
|
|
@@ -95,12 +104,12 @@ declare const PayloadUpstreamRebase_base: Schema.TaggedStruct<"upstream-rebase",
|
|
|
95
104
|
export declare class PayloadUpstreamRebase extends PayloadUpstreamRebase_base {
|
|
96
105
|
}
|
|
97
106
|
declare const PayloadUpstreamAdvance_base: Schema.TaggedStruct<"upstream-advance", {
|
|
98
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
107
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
99
108
|
}>;
|
|
100
109
|
export declare class PayloadUpstreamAdvance extends PayloadUpstreamAdvance_base {
|
|
101
110
|
}
|
|
102
111
|
declare const PayloadLocalPush_base: Schema.TaggedStruct<"local-push", {
|
|
103
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
112
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
104
113
|
}>;
|
|
105
114
|
export declare class PayloadLocalPush extends PayloadLocalPush_base {
|
|
106
115
|
}
|
|
@@ -119,14 +128,14 @@ declare const MergeContext_base: Schema.Class<MergeContext, {
|
|
|
119
128
|
}>, never, {
|
|
120
129
|
readonly payload: {
|
|
121
130
|
readonly _tag: "upstream-rebase";
|
|
122
|
-
readonly rollbackEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
123
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
131
|
+
readonly rollbackEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
132
|
+
readonly newEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
124
133
|
} | {
|
|
125
134
|
readonly _tag: "upstream-advance";
|
|
126
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
135
|
+
readonly newEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
127
136
|
} | {
|
|
128
137
|
readonly _tag: "local-push";
|
|
129
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
138
|
+
readonly newEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
130
139
|
};
|
|
131
140
|
} & {
|
|
132
141
|
readonly syncState: SyncState;
|
|
@@ -138,27 +147,27 @@ export declare class MergeContext extends MergeContext_base {
|
|
|
138
147
|
declare const MergeResultAdvance_base: Schema.Class<MergeResultAdvance, {
|
|
139
148
|
_tag: Schema.Literal<["advance"]>;
|
|
140
149
|
newSyncState: typeof SyncState;
|
|
141
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
150
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
142
151
|
/** Events which were previously pending but are now confirmed */
|
|
143
|
-
confirmedEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
152
|
+
confirmedEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
144
153
|
mergeContext: typeof MergeContext;
|
|
145
154
|
}, Schema.Struct.Encoded<{
|
|
146
155
|
_tag: Schema.Literal<["advance"]>;
|
|
147
156
|
newSyncState: typeof SyncState;
|
|
148
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
157
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
149
158
|
/** Events which were previously pending but are now confirmed */
|
|
150
|
-
confirmedEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
159
|
+
confirmedEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
151
160
|
mergeContext: typeof MergeContext;
|
|
152
161
|
}>, never, {
|
|
153
162
|
readonly _tag: "advance";
|
|
154
163
|
} & {
|
|
155
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
164
|
+
readonly newEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
156
165
|
} & {
|
|
157
166
|
readonly newSyncState: SyncState;
|
|
158
167
|
} & {
|
|
159
168
|
readonly mergeContext: MergeContext;
|
|
160
169
|
} & {
|
|
161
|
-
readonly confirmedEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
170
|
+
readonly confirmedEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
162
171
|
}, {}, {}>;
|
|
163
172
|
export declare class MergeResultAdvance extends MergeResultAdvance_base {
|
|
164
173
|
toJSON: () => any;
|
|
@@ -166,23 +175,23 @@ export declare class MergeResultAdvance extends MergeResultAdvance_base {
|
|
|
166
175
|
declare const MergeResultRebase_base: Schema.Class<MergeResultRebase, {
|
|
167
176
|
_tag: Schema.Literal<["rebase"]>;
|
|
168
177
|
newSyncState: typeof SyncState;
|
|
169
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
178
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
170
179
|
/** Events which need to be rolled back */
|
|
171
|
-
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
180
|
+
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
172
181
|
mergeContext: typeof MergeContext;
|
|
173
182
|
}, Schema.Struct.Encoded<{
|
|
174
183
|
_tag: Schema.Literal<["rebase"]>;
|
|
175
184
|
newSyncState: typeof SyncState;
|
|
176
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
185
|
+
newEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
177
186
|
/** Events which need to be rolled back */
|
|
178
|
-
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
187
|
+
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
179
188
|
mergeContext: typeof MergeContext;
|
|
180
189
|
}>, never, {
|
|
181
190
|
readonly _tag: "rebase";
|
|
182
191
|
} & {
|
|
183
|
-
readonly rollbackEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
192
|
+
readonly rollbackEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
184
193
|
} & {
|
|
185
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
194
|
+
readonly newEvents: readonly LiveStoreEvent.Client.EncodedWithMeta[];
|
|
186
195
|
} & {
|
|
187
196
|
readonly newSyncState: SyncState;
|
|
188
197
|
} & {
|
|
@@ -198,7 +207,9 @@ declare const MergeResultReject_base: Schema.Class<MergeResultReject, {
|
|
|
198
207
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
199
208
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
200
209
|
rebaseGeneration: typeof Schema.Int;
|
|
201
|
-
}
|
|
210
|
+
}> & {
|
|
211
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
212
|
+
};
|
|
202
213
|
mergeContext: typeof MergeContext;
|
|
203
214
|
}, Schema.Struct.Encoded<{
|
|
204
215
|
_tag: Schema.Literal<["reject"]>;
|
|
@@ -207,7 +218,9 @@ declare const MergeResultReject_base: Schema.Class<MergeResultReject, {
|
|
|
207
218
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
208
219
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
209
220
|
rebaseGeneration: typeof Schema.Int;
|
|
210
|
-
}
|
|
221
|
+
}> & {
|
|
222
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
223
|
+
};
|
|
211
224
|
mergeContext: typeof MergeContext;
|
|
212
225
|
}>, never, {
|
|
213
226
|
readonly _tag: "reject";
|
|
@@ -223,40 +236,27 @@ declare const MergeResultReject_base: Schema.Class<MergeResultReject, {
|
|
|
223
236
|
export declare class MergeResultReject extends MergeResultReject_base {
|
|
224
237
|
toJSON: () => any;
|
|
225
238
|
}
|
|
226
|
-
declare const
|
|
227
|
-
_tag: Schema.Literal<["unexpected-error"]>;
|
|
228
|
-
message: typeof Schema.String;
|
|
229
|
-
}, Schema.Struct.Encoded<{
|
|
230
|
-
_tag: Schema.Literal<["unexpected-error"]>;
|
|
231
|
-
message: typeof Schema.String;
|
|
232
|
-
}>, never, {
|
|
233
|
-
readonly _tag: "unexpected-error";
|
|
234
|
-
} & {
|
|
235
|
-
readonly message: string;
|
|
236
|
-
}, {}, {}>;
|
|
237
|
-
export declare class MergeResultUnexpectedError extends MergeResultUnexpectedError_base {
|
|
238
|
-
}
|
|
239
|
-
declare const MergeResult_base: Schema.Union<[typeof MergeResultAdvance, typeof MergeResultRebase, typeof MergeResultReject, typeof MergeResultUnexpectedError]>;
|
|
239
|
+
declare const MergeResult_base: Schema.Union<[typeof MergeResultAdvance, typeof MergeResultRebase, typeof MergeResultReject]>;
|
|
240
240
|
export declare class MergeResult extends MergeResult_base {
|
|
241
241
|
}
|
|
242
242
|
export declare const payloadFromMergeResult: (mergeResult: typeof MergeResultAdvance.Type | typeof MergeResultRebase.Type) => typeof PayloadUpstream.Type;
|
|
243
|
-
export declare const merge: (
|
|
243
|
+
export declare const merge: (args_0: {
|
|
244
244
|
syncState: SyncState;
|
|
245
245
|
payload: typeof Payload.Type;
|
|
246
|
-
isClientEvent: (event: LiveStoreEvent.EncodedWithMeta) => boolean;
|
|
247
|
-
isEqualEvent: (a: LiveStoreEvent.EncodedWithMeta, b: LiveStoreEvent.EncodedWithMeta) => boolean;
|
|
246
|
+
isClientEvent: (event: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
247
|
+
isEqualEvent: (a: LiveStoreEvent.Client.EncodedWithMeta, b: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
248
248
|
/** This is used in the leader which should ignore client events when receiving an upstream-advance payload */
|
|
249
249
|
ignoreClientEvents?: boolean;
|
|
250
|
-
}) =>
|
|
250
|
+
}) => Effect.Effect<MergeResultAdvance | MergeResultRebase | MergeResultReject, never, never>;
|
|
251
251
|
/**
|
|
252
252
|
* Gets the index relative to `existingEvents` where the divergence point is
|
|
253
253
|
* by comparing each event in `existingEvents` to the corresponding event in `incomingEvents`
|
|
254
254
|
*/
|
|
255
255
|
export declare const findDivergencePoint: ({ existingEvents, incomingEvents, isEqualEvent, isClientEvent, ignoreClientEvents, }: {
|
|
256
|
-
existingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>;
|
|
257
|
-
incomingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>;
|
|
258
|
-
isEqualEvent: (a: LiveStoreEvent.EncodedWithMeta, b: LiveStoreEvent.EncodedWithMeta) => boolean;
|
|
259
|
-
isClientEvent: (event: LiveStoreEvent.EncodedWithMeta) => boolean;
|
|
256
|
+
existingEvents: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>;
|
|
257
|
+
incomingEvents: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>;
|
|
258
|
+
isEqualEvent: (a: LiveStoreEvent.Client.EncodedWithMeta, b: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
259
|
+
isClientEvent: (event: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
260
260
|
ignoreClientEvents: boolean;
|
|
261
261
|
}) => number;
|
|
262
262
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"syncstate.d.ts","sourceRoot":"","sources":["../../src/sync/syncstate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE9E,OAAO,KAAK,mBAAmB,MAAM,sCAAsC,CAAA;AAC3E,OAAO,KAAK,cAAc,MAAM,iCAAiC,CAAA;;;IAyC/D,kFAAkF;;;;;;;;IAElF,qEAAqE;;;;;;;;;;IAFrE,kFAAkF;;;;;;;;IAElF,qEAAqE;;;;;;;;;;;;;;;;;;;;;;;AAzCvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,SAAU,SAAQ,cAM7B;IACA,MAAM,QAAO,GAAG,CAId;CACH;;IAMC,0CAA0C;;IAE1C,gGAAgG;;;AANlG;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAKzC;CAAG;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAE1C;CAAG;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG;;AAEL,qBAAa,OAAQ,SAAQ,YAA6E;CAAG;;AAE7G,qBAAa,eAAgB,SAAQ,oBAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;AAEnG,uCAAuC;AACvC,qBAAa,YAAa,SAAQ,iBAGhC;IACA,MAAM,QAAO,GAAG,CAqBf;CACF;;;;;IAMC,iEAAiE;;;;;;;IAAjE,iEAAiE;;;;;;;;;;;;;;AAJnE,qBAAa,kBAAmB,SAAQ,uBAOtC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;;;IAMC,0CAA0C;;;;;;;IAA1C,0CAA0C;;;;;;;;;;;;;;AAJ5C,qBAAa,iBAAkB,SAAQ,sBAOrC;IACA,MAAM,QAAO,GAAG,CAQf;CACF;;;IAIC,mDAAmD;;;;;;;;;;;IAAnD,mDAAmD;;;;;;;;;;;;;;;;;;;;AAFrD,qBAAa,iBAAkB,SAAQ,sBAKrC;IACA,MAAM,QAAO,GAAG,CAMf;CACF;;AAED,qBAAa,WAAY,SAAQ,gBAIhC;CAAG;AAEJ,eAAO,MAAM,sBAAsB,GACjC,aAAa,OAAO,kBAAkB,CAAC,IAAI,GAAG,OAAO,iBAAiB,CAAC,IAAI,KAC1E,OAAO,eAAe,CAAC,IAYvB,CAAA;AASH,eAAO,MAAM,KAAK;eAOL,SAAS;aACX,OAAO,OAAO,CAAC,IAAI;mBACb,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO;kBAC1D,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO;IAC7G,8GAA8G;yBACzF,OAAO;6FA8N1B,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,sFAMjC;IACD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACpE,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACpE,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO,CAAA;IAC7G,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO,CAAA;IACxE,kBAAkB,EAAE,OAAO,CAAA;CAC5B,KAAG,MAyBH,CAAA"}
|