@livestore/common 0.4.0-dev.9 → 0.5.0-dev.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/MaterializationJournal.d.ts +44 -0
- package/dist/MaterializationJournal.d.ts.map +1 -0
- package/dist/MaterializationJournal.js +112 -0
- package/dist/MaterializationJournal.js.map +1 -0
- package/dist/StateHead.d.ts +26 -0
- package/dist/StateHead.d.ts.map +1 -0
- package/dist/StateHead.js +50 -0
- package/dist/StateHead.js.map +1 -0
- 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/__tests__/fixture.d.ts +1 -1
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/__tests__/fixture.js +3 -3
- package/dist/__tests__/fixture.js.map +1 -1
- package/dist/adapter-types.d.ts +59 -57
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +31 -22
- 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 +56 -56
- package/dist/debug-info.d.ts.map +1 -1
- package/dist/debug-info.js +46 -32
- package/dist/debug-info.js.map +1 -1
- package/dist/defs.d.ts +9 -9
- package/dist/defs.js +2 -2
- 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 +16 -0
- package/dist/devtools/devtools-compatibility.test.js.map +1 -0
- package/dist/devtools/devtools-messages-client-session.d.ts +531 -312
- package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-client-session.js +86 -67
- package/dist/devtools/devtools-messages-client-session.js.map +1 -1
- package/dist/devtools/devtools-messages-common.d.ts +32 -35
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +12 -14
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +417 -320
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.js +117 -87
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/devtools/devtools-sessioninfo.d.ts +28 -17
- package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
- package/dist/devtools/devtools-sessioninfo.js +12 -6
- package/dist/devtools/devtools-sessioninfo.js.map +1 -1
- package/dist/devtools/mod.d.ts +17 -7
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +19 -8
- package/dist/devtools/mod.js.map +1 -1
- package/dist/errors.d.ts +52 -46
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +31 -21
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +116 -21
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +596 -470
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/RejectedPushError.d.ts +138 -0
- package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
- package/dist/leader-thread/RejectedPushError.js +97 -0
- package/dist/leader-thread/RejectedPushError.js.map +1 -0
- package/dist/leader-thread/connection.d.ts +1 -0
- package/dist/leader-thread/connection.d.ts.map +1 -1
- package/dist/leader-thread/connection.js +10 -9
- package/dist/leader-thread/connection.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +20 -15
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +80 -20
- 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 +110 -62
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +19 -7
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +67 -45
- 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 +3 -2
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +32 -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 +19 -40
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +3 -7
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -3
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/stream-events.d.ts +53 -0
- package/dist/leader-thread/stream-events.d.ts.map +1 -0
- package/dist/leader-thread/stream-events.js +164 -0
- package/dist/leader-thread/stream-events.js.map +1 -0
- package/dist/leader-thread/types.d.ts +92 -51
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js +17 -4
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/logging.d.ts +15 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +2 -0
- package/dist/logging.js.map +1 -0
- package/dist/make-client-session.d.ts +6 -5
- package/dist/make-client-session.d.ts.map +1 -1
- package/dist/make-client-session.js +10 -7
- package/dist/make-client-session.js.map +1 -1
- package/dist/materializer-helper.d.ts +6 -7
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +22 -40
- package/dist/materializer-helper.js.map +1 -1
- package/dist/otel.d.ts +4 -4
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +8 -8
- 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 +52 -39
- 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/define.test.d.ts +2 -0
- package/dist/schema/EventDef/define.test.d.ts.map +1 -0
- package/dist/schema/EventDef/define.test.js +23 -0
- package/dist/schema/EventDef/define.test.js.map +1 -0
- package/dist/schema/EventDef/deprecated.d.ts +94 -0
- package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
- package/dist/schema/EventDef/deprecated.js +143 -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 +192 -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/client.d.ts +168 -0
- package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/client.js +179 -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 +120 -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 +7 -4
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +6 -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 +34 -5
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +14 -18
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +54 -30
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +146 -6
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.js +13 -15
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
- package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-def.js +132 -57
- package/dist/schema/state/sqlite/column-def.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.test.js +155 -70
- 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 +26 -17
- package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +15 -6
- 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 +25 -19
- 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 +22 -16
- 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 +28 -17
- 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 +14 -12
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +3 -5
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +6 -8
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/persistence.d.ts +11 -0
- package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
- package/dist/schema/state/sqlite/persistence.js +10 -0
- package/dist/schema/state/sqlite/persistence.js.map +1 -0
- package/dist/schema/state/sqlite/query-builder/api.d.ts +58 -29
- 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 +105 -24
- package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts +4 -2
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +42 -27
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +402 -498
- 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/eventlog-tables.d.ts +515 -0
- 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 +678 -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 +87 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
- package/dist/schema/state/sqlite/table-def.d.ts +19 -20
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +54 -4
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.js +226 -20
- 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 +70 -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/session-id-symbol.d.ts +29 -0
- package/dist/session-id-symbol.d.ts.map +1 -0
- package/dist/session-id-symbol.js +44 -0
- package/dist/session-id-symbol.js.map +1 -0
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js +26 -16
- 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/sql-queries/types.d.ts +6 -7
- package/dist/sql-queries/types.d.ts.map +1 -1
- package/dist/sql-queries/types.js.map +1 -1
- package/dist/sqlite-db-helper.d.ts +21 -1
- package/dist/sqlite-db-helper.d.ts.map +1 -1
- package/dist/sqlite-db-helper.js +40 -5
- package/dist/sqlite-db-helper.js.map +1 -1
- package/dist/sqlite-types.d.ts +8 -11
- package/dist/sqlite-types.d.ts.map +1 -1
- package/dist/sqlite-types.js +3 -3
- package/dist/sqlite-types.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +47 -25
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +269 -154
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/errors.d.ts +12 -51
- package/dist/sync/errors.d.ts.map +1 -1
- package/dist/sync/errors.js +7 -24
- 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 +11 -10
- package/dist/sync/mock-sync-backend.d.ts.map +1 -1
- package/dist/sync/mock-sync-backend.js +97 -74
- package/dist/sync/mock-sync-backend.js.map +1 -1
- package/dist/sync/mock-sync-backend.test.d.ts +2 -0
- package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
- package/dist/sync/mock-sync-backend.test.js +49 -0
- package/dist/sync/mock-sync-backend.test.js.map +1 -0
- 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 +58 -15
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +219 -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 +12 -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 +4 -4
- 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 +9 -9
- package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
- package/dist/sync/next/test/event-fixtures.js +12 -12
- package/dist/sync/next/test/event-fixtures.js.map +1 -1
- package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
- package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
- package/dist/sync/next/test/history-dag-common.test.js +73 -0
- package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
- 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 +6 -4
- package/dist/sync/sync-backend-kv.js.map +1 -1
- package/dist/sync/sync-backend.d.ts +41 -21
- package/dist/sync/sync-backend.d.ts.map +1 -1
- package/dist/sync/sync-backend.js +45 -4
- 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 +115 -191
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +108 -129
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +289 -161
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/transport-chunking.d.ts +35 -0
- package/dist/sync/transport-chunking.d.ts.map +1 -0
- package/dist/sync/transport-chunking.js +47 -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 +3 -3
- package/dist/testing/event-factory.d.ts.map +1 -1
- package/dist/testing/event-factory.js +5 -7
- package/dist/testing/event-factory.js.map +1 -1
- package/dist/util.d.ts +11 -4
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +21 -4
- 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 +50 -16
- package/src/ClientSessionLeaderThreadProxy.ts +27 -12
- package/src/MaterializationJournal.ts +184 -0
- package/src/StateHead.ts +80 -0
- package/src/WorkerTransportError.ts +12 -0
- package/src/__tests__/fixture.ts +3 -3
- package/src/adapter-types.ts +62 -56
- package/src/bounded-collections.ts +6 -5
- package/src/debug-info.ts +54 -43
- package/src/defs.ts +2 -2
- package/src/devtools/devtools-compatibility.test.ts +19 -0
- package/src/devtools/devtools-messages-client-session.ts +72 -63
- package/src/devtools/devtools-messages-common.ts +18 -22
- package/src/devtools/devtools-messages-leader.ts +89 -68
- package/src/devtools/devtools-sessioninfo.ts +17 -12
- package/src/devtools/mod.ts +15 -7
- package/src/errors.ts +58 -38
- package/src/index.ts +11 -1
- package/src/leader-thread/LeaderSyncProcessor.ts +927 -674
- package/src/leader-thread/RejectedPushError.ts +119 -0
- package/src/leader-thread/connection.ts +13 -9
- package/src/leader-thread/eventlog.ts +114 -41
- package/src/leader-thread/leader-worker-devtools.ts +223 -124
- package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
- package/src/leader-thread/make-leader-thread-layer.ts +170 -82
- package/src/leader-thread/materialize-event.ts +51 -16
- package/src/leader-thread/mod.ts +1 -0
- package/src/leader-thread/recreate-db.ts +26 -61
- package/src/leader-thread/shutdown-channel.ts +3 -18
- package/src/leader-thread/stream-events.ts +209 -0
- package/src/leader-thread/types.ts +77 -65
- package/src/logging.ts +15 -0
- package/src/make-client-session.ts +16 -10
- package/src/materializer-helper.ts +31 -49
- package/src/otel.ts +15 -13
- package/src/rematerialize-from-eventlog.ts +106 -93
- package/src/schema/EventDef/define.test.ts +28 -0
- package/src/schema/EventDef/define.ts +218 -0
- package/src/schema/EventDef/deprecated.test.ts +122 -0
- package/src/schema/EventDef/deprecated.ts +172 -0
- package/src/schema/EventDef/event-def.ts +123 -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 +256 -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 +142 -0
- package/src/schema/LiveStoreEvent/client.ts +236 -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 +7 -4
- package/src/schema/schema.ts +48 -6
- package/src/schema/state/sqlite/client-document-def.test.ts +172 -14
- package/src/schema/state/sqlite/client-document-def.ts +126 -98
- package/src/schema/state/sqlite/column-annotations.test.ts +27 -45
- package/src/schema/state/sqlite/column-annotations.ts +27 -30
- package/src/schema/state/sqlite/column-def.test.ts +186 -77
- package/src/schema/state/sqlite/column-def.ts +169 -62
- package/src/schema/state/sqlite/column-spec.test.ts +34 -19
- package/src/schema/state/sqlite/column-spec.ts +38 -11
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +17 -7
- package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +37 -17
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +65 -45
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +48 -40
- package/src/schema/state/sqlite/mod.ts +9 -12
- package/src/schema/state/sqlite/persistence.ts +11 -0
- package/src/schema/state/sqlite/query-builder/api.ts +61 -23
- package/src/schema/state/sqlite/query-builder/astToSql.ts +117 -23
- package/src/schema/state/sqlite/query-builder/impl.test.ts +489 -551
- package/src/schema/state/sqlite/query-builder/impl.ts +43 -26
- 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 +109 -0
- package/src/schema/state/sqlite/table-def.test.ts +295 -46
- package/src/schema/state/sqlite/table-def.ts +109 -64
- package/src/schema/unknown-events.ts +132 -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/session-id-symbol.ts +59 -0
- package/src/sql-queries/sql-queries.ts +26 -18
- package/src/sql-queries/sql-query-builder.ts +1 -0
- package/src/sql-queries/types.ts +6 -7
- package/src/sqlite-db-helper.ts +67 -5
- package/src/sqlite-types.ts +9 -11
- package/src/sync/ClientSessionSyncProcessor.ts +388 -194
- package/src/sync/errors.ts +18 -28
- package/src/sync/index.ts +2 -0
- package/src/sync/mock-sync-backend.test.ts +78 -0
- package/src/sync/mock-sync-backend.ts +196 -108
- 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 +306 -26
- package/src/sync/next/history-dag.ts +20 -13
- package/src/sync/next/rebase-events.ts +12 -12
- package/src/sync/next/test/compact-events.calculator.test.ts +5 -4
- package/src/sync/next/test/compact-events.test.ts +4 -3
- package/src/sync/next/test/event-fixtures.ts +14 -14
- package/src/sync/next/test/history-dag-common.test.ts +87 -0
- package/src/sync/sync-backend-kv.ts +7 -4
- package/src/sync/sync-backend.ts +75 -26
- package/src/sync/sync.ts +24 -2
- package/src/sync/syncstate.test.ts +657 -442
- package/src/sync/syncstate.ts +175 -160
- package/src/sync/transport-chunking.ts +85 -0
- package/src/sync/validate-push-payload.ts +6 -8
- package/src/testing/event-factory.ts +10 -12
- package/src/util.ts +20 -11
- package/src/version.ts +32 -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 +0 -306
- 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 +0 -976
- 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/sql-queries/misc.d.ts +0 -2
- package/dist/sql-queries/misc.d.ts.map +0 -1
- package/dist/sql-queries/misc.js +0 -2
- package/dist/sql-queries/misc.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/sql-queries/misc.ts +0 -2
- 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,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.Json> = {
|
|
11
11
|
storeId: string;
|
|
12
12
|
clientId: string;
|
|
13
|
-
payload:
|
|
13
|
+
payload: TPayload | undefined;
|
|
14
14
|
};
|
|
15
|
-
export type SyncBackendConstructor<TSyncMetadata = Schema.
|
|
16
|
-
export type SyncBackend<TSyncMetadata = Schema.
|
|
15
|
+
export type SyncBackendConstructor<TSyncMetadata = Schema.Json, TPayload = Schema.Json> = (args: MakeBackendArgs<TPayload>) => Effect.Effect<SyncBackend<TSyncMetadata>, UnknownError, Scope.Scope | HttpClient.HttpClient | KeyValueStore.KeyValueStore>;
|
|
16
|
+
export type SyncBackend<TSyncMetadata = Schema.Json> = {
|
|
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.TimeoutError>;
|
|
41
41
|
isConnected: SubscriptionRef.SubscriptionRef<boolean>;
|
|
42
42
|
/**
|
|
43
43
|
* Metadata describing the sync backend. (Currently only used by devtools.)
|
|
@@ -45,7 +45,7 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
|
|
|
45
45
|
metadata: {
|
|
46
46
|
name: string;
|
|
47
47
|
description: string;
|
|
48
|
-
} & Record<string, Schema.
|
|
48
|
+
} & Record<string, Schema.Json>;
|
|
49
49
|
/** Information about the sync backend capabilities. */
|
|
50
50
|
supports: {
|
|
51
51
|
/**
|
|
@@ -59,27 +59,47 @@ export type SyncBackend<TSyncMetadata = Schema.JsonValue> = {
|
|
|
59
59
|
pullLive: boolean;
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
|
-
|
|
63
|
-
|
|
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
|
+
readonly isConnected: Schema.Boolean;
|
|
68
|
+
/** Unix epoch timestamp (ms) of the latest connectivity state transition. */
|
|
69
|
+
readonly timestampMs: Schema.Finite;
|
|
70
|
+
/** Devtools specific metadata describing simulator overrides. */
|
|
71
|
+
readonly devtools: Schema.Struct<{
|
|
72
|
+
/** Indicates whether the devtools latch forced the client into an offline state. */
|
|
73
|
+
readonly latchClosed: 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>;
|
|
82
|
+
export declare const PullResPageInfo: Schema.Union<readonly [Schema.TaggedStruct<"MoreUnknown", {}>, Schema.TaggedStruct<"MoreKnown", {
|
|
83
|
+
readonly remaining: Schema.Finite;
|
|
64
84
|
}>, Schema.TaggedStruct<"NoMore", {}>]>;
|
|
65
85
|
export type PullResPageInfo = typeof PullResPageInfo.Type;
|
|
66
86
|
export declare const pageInfoNoMore: PullResPageInfo;
|
|
67
87
|
export declare const pageInfoMoreUnknown: PullResPageInfo;
|
|
68
88
|
export declare const pageInfoMoreKnown: (remaining: number) => PullResPageInfo;
|
|
69
|
-
export declare const pullResItemEmpty: <TSyncMetadata = Schema.
|
|
70
|
-
export interface PullResItem<TSyncMetadata = Schema.
|
|
89
|
+
export declare const pullResItemEmpty: <TSyncMetadata = Schema.Json>() => PullResItem<TSyncMetadata>;
|
|
90
|
+
export interface PullResItem<TSyncMetadata = Schema.Json> {
|
|
71
91
|
batch: ReadonlyArray<{
|
|
72
|
-
eventEncoded: LiveStoreEvent.
|
|
92
|
+
eventEncoded: LiveStoreEvent.Global.Encoded;
|
|
73
93
|
metadata: Option.Option<TSyncMetadata>;
|
|
74
94
|
}>;
|
|
75
95
|
pageInfo: PullResPageInfo;
|
|
76
96
|
}
|
|
77
|
-
export declare const of: <TSyncMetadata = Schema.
|
|
97
|
+
export declare const of: <TSyncMetadata = Schema.Json>(obj: SyncBackend<TSyncMetadata>) => SyncBackend<TSyncMetadata>;
|
|
78
98
|
/**
|
|
79
99
|
* Useful to continue pulling from the last event in the batch.
|
|
80
100
|
*/
|
|
81
|
-
export declare const cursorFromPullResItem: <TSyncMetadata = Schema.
|
|
82
|
-
eventSequenceNumber: EventSequenceNumber.
|
|
101
|
+
export declare const cursorFromPullResItem: <TSyncMetadata = Schema.Json>(item: PullResItem<TSyncMetadata>) => Option.Option<{
|
|
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,8 +1,49 @@
|
|
|
1
1
|
import { Option, Schema, } from '@livestore/utils/effect';
|
|
2
2
|
export * from "./sync-backend-kv.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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.Finite,
|
|
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
|
+
}).annotate({ 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
|
+
};
|
|
40
|
+
export const PullResPageInfo = Schema.Union([
|
|
41
|
+
Schema.TaggedStruct('MoreUnknown', {}),
|
|
42
|
+
Schema.TaggedStruct('MoreKnown', {
|
|
43
|
+
remaining: Schema.Finite,
|
|
44
|
+
}),
|
|
45
|
+
Schema.TaggedStruct('NoMore', {}),
|
|
46
|
+
]);
|
|
6
47
|
export const pageInfoNoMore = { _tag: 'NoMore' };
|
|
7
48
|
export const pageInfoMoreUnknown = { _tag: 'MoreUnknown' };
|
|
8
49
|
export const pageInfoMoreKnown = (remaining) => ({ _tag: 'MoreKnown', remaining });
|
|
@@ -16,7 +57,7 @@ export const of = (obj) => obj;
|
|
|
16
57
|
*/
|
|
17
58
|
export const cursorFromPullResItem = (item) => {
|
|
18
59
|
const lastEvent = item.batch.at(-1);
|
|
19
|
-
if (
|
|
60
|
+
if (lastEvent == null) {
|
|
20
61
|
return Option.none();
|
|
21
62
|
}
|
|
22
63
|
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.Json> = {
|
|
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,IAAI,IAAI;IAChD,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,48 +1,25 @@
|
|
|
1
|
-
import { Schema } from '@livestore/utils/effect';
|
|
2
|
-
import * as
|
|
3
|
-
|
|
4
|
-
|
|
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';
|
|
4
|
+
declare const SyncState_base: Schema.Class<SyncState, Schema.Struct<{
|
|
5
|
+
readonly 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
|
-
upstreamHead: Schema.Struct<{
|
|
7
|
-
global: Schema.
|
|
8
|
-
client: Schema.
|
|
9
|
-
rebaseGeneration:
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
localHead: Schema.Struct<{
|
|
13
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
14
|
-
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
15
|
-
rebaseGeneration: typeof Schema.Int;
|
|
16
|
-
}>;
|
|
17
|
-
}, Schema.Struct.Encoded<{
|
|
18
|
-
pending: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
19
|
-
/** What this node expects the next upstream node to have as its own local head */
|
|
20
|
-
upstreamHead: Schema.Struct<{
|
|
21
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
22
|
-
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
23
|
-
rebaseGeneration: typeof Schema.Int;
|
|
24
|
-
}>;
|
|
25
|
-
/** Equivalent to `pending.at(-1)?.id` if there are pending events */
|
|
26
|
-
localHead: Schema.Struct<{
|
|
27
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
28
|
-
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
29
|
-
rebaseGeneration: typeof Schema.Int;
|
|
30
|
-
}>;
|
|
31
|
-
}>, never, {
|
|
32
|
-
readonly upstreamHead: {
|
|
33
|
-
readonly global: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
|
|
34
|
-
readonly client: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
|
|
35
|
-
readonly rebaseGeneration: number;
|
|
7
|
+
readonly upstreamHead: Schema.Struct<{
|
|
8
|
+
readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
|
|
9
|
+
readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
|
|
10
|
+
readonly rebaseGeneration: Schema.Int;
|
|
11
|
+
}> & {
|
|
12
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
36
13
|
};
|
|
37
|
-
|
|
38
|
-
readonly localHead: {
|
|
39
|
-
readonly global:
|
|
40
|
-
readonly client:
|
|
41
|
-
readonly rebaseGeneration:
|
|
14
|
+
/** Equivalent to `pending.at(-1)?.id` if there are pending events */
|
|
15
|
+
readonly localHead: Schema.Struct<{
|
|
16
|
+
readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
|
|
17
|
+
readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
|
|
18
|
+
readonly rebaseGeneration: Schema.Int;
|
|
19
|
+
}> & {
|
|
20
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
42
21
|
};
|
|
43
|
-
}
|
|
44
|
-
readonly pending: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
45
|
-
}, {}, {}>;
|
|
22
|
+
}>, {}>;
|
|
46
23
|
/**
|
|
47
24
|
* SyncState represents the current sync state of a sync node relative to an upstream node.
|
|
48
25
|
* Events flow from local to upstream, with each state maintaining its own event head.
|
|
@@ -54,7 +31,7 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
54
31
|
* +------------------------+
|
|
55
32
|
* ▼ ▼
|
|
56
33
|
* Upstream Head Local Head
|
|
57
|
-
*
|
|
34
|
+
* e1 e1.1, e1.2, e2
|
|
58
35
|
* ```
|
|
59
36
|
*
|
|
60
37
|
* **Pending Events**: Events awaiting acknowledgment from the upstream.
|
|
@@ -70,7 +47,7 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
70
47
|
* Invariants:
|
|
71
48
|
* 1. **Chain Continuity**: Each event must reference its immediate parent.
|
|
72
49
|
* 2. **Head Ordering**: Upstream Head ≤ Local Head.
|
|
73
|
-
* 3. **Event number sequence**: Must follow the pattern
|
|
50
|
+
* 3. **Event number sequence**: Must follow the pattern e1→e1.1→e1.2→e2.
|
|
74
51
|
*
|
|
75
52
|
* A few further notes to help form an intuition:
|
|
76
53
|
* - The goal is to keep the pending events as small as possible (i.e. to have synced with the next upstream node)
|
|
@@ -83,181 +60,128 @@ declare const SyncState_base: Schema.Class<SyncState, {
|
|
|
83
60
|
export declare class SyncState extends SyncState_base {
|
|
84
61
|
toJSON: () => any;
|
|
85
62
|
}
|
|
86
|
-
declare const PayloadUpstreamRebase_base: Schema.TaggedStruct<"upstream-rebase", {
|
|
87
|
-
/** Events which need to be rolled back */
|
|
88
|
-
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
89
|
-
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
90
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
91
|
-
}>;
|
|
92
63
|
/**
|
|
93
64
|
* This payload propagates a rebase from the upstream node
|
|
94
65
|
*/
|
|
95
|
-
export declare
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
66
|
+
export declare const PayloadUpstreamRebase: Schema.TaggedStruct<"upstream-rebase", {
|
|
67
|
+
/** Events which need to be rolled back */
|
|
68
|
+
readonly rollbackEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
69
|
+
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
70
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
99
71
|
}>;
|
|
100
|
-
export declare
|
|
101
|
-
|
|
102
|
-
declare const PayloadLocalPush_base: Schema.TaggedStruct<"local-push", {
|
|
103
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
72
|
+
export declare const PayloadUpstreamAdvance: Schema.TaggedStruct<"upstream-advance", {
|
|
73
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
104
74
|
}>;
|
|
105
|
-
export declare
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
export declare
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
readonly
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
readonly
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
75
|
+
export declare const PayloadLocalPush: Schema.TaggedStruct<"local-push", {
|
|
76
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
77
|
+
}>;
|
|
78
|
+
export declare const Payload: Schema.Union<readonly [Schema.TaggedStruct<"upstream-rebase", {
|
|
79
|
+
/** Events which need to be rolled back */
|
|
80
|
+
readonly rollbackEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
81
|
+
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
82
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
83
|
+
}>, Schema.TaggedStruct<"upstream-advance", {
|
|
84
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
85
|
+
}>, Schema.TaggedStruct<"local-push", {
|
|
86
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
87
|
+
}>]>;
|
|
88
|
+
export declare const PayloadUpstream: Schema.Union<readonly [Schema.TaggedStruct<"upstream-rebase", {
|
|
89
|
+
/** Events which need to be rolled back */
|
|
90
|
+
readonly rollbackEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
91
|
+
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
92
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
93
|
+
}>, Schema.TaggedStruct<"upstream-advance", {
|
|
94
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
95
|
+
}>]>;
|
|
96
|
+
declare const MergeContext_base: Schema.Class<MergeContext, Schema.Struct<{
|
|
97
|
+
readonly payload: Schema.Union<readonly [Schema.TaggedStruct<"upstream-rebase", {
|
|
98
|
+
/** Events which need to be rolled back */
|
|
99
|
+
readonly rollbackEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
100
|
+
/** Events which need to be applied after the rollback (already rebased by the upstream node) */
|
|
101
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
102
|
+
}>, Schema.TaggedStruct<"upstream-advance", {
|
|
103
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
104
|
+
}>, Schema.TaggedStruct<"local-push", {
|
|
105
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
106
|
+
}>]>;
|
|
107
|
+
readonly syncState: typeof SyncState;
|
|
108
|
+
}>, {}>;
|
|
134
109
|
/** Only used for debugging purposes */
|
|
135
110
|
export declare class MergeContext extends MergeContext_base {
|
|
136
111
|
toJSON: () => any;
|
|
137
112
|
}
|
|
138
|
-
declare const MergeResultAdvance_base: Schema.Class<MergeResultAdvance, {
|
|
139
|
-
_tag: Schema.Literal<
|
|
140
|
-
newSyncState: typeof SyncState;
|
|
141
|
-
newEvents: Schema
|
|
142
|
-
/** Events which were previously pending but are now confirmed */
|
|
143
|
-
confirmedEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
144
|
-
mergeContext: typeof MergeContext;
|
|
145
|
-
}, Schema.Struct.Encoded<{
|
|
146
|
-
_tag: Schema.Literal<["advance"]>;
|
|
147
|
-
newSyncState: typeof SyncState;
|
|
148
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
113
|
+
declare const MergeResultAdvance_base: Schema.Class<MergeResultAdvance, Schema.Struct<{
|
|
114
|
+
readonly _tag: Schema.Literal<"advance">;
|
|
115
|
+
readonly newSyncState: typeof SyncState;
|
|
116
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
149
117
|
/** Events which were previously pending but are now confirmed */
|
|
150
|
-
confirmedEvents: Schema
|
|
151
|
-
mergeContext: typeof MergeContext;
|
|
152
|
-
}>,
|
|
153
|
-
readonly _tag: "advance";
|
|
154
|
-
} & {
|
|
155
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
156
|
-
} & {
|
|
157
|
-
readonly newSyncState: SyncState;
|
|
158
|
-
} & {
|
|
159
|
-
readonly mergeContext: MergeContext;
|
|
160
|
-
} & {
|
|
161
|
-
readonly confirmedEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
162
|
-
}, {}, {}>;
|
|
118
|
+
readonly confirmedEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
119
|
+
readonly mergeContext: typeof MergeContext;
|
|
120
|
+
}>, {}>;
|
|
163
121
|
export declare class MergeResultAdvance extends MergeResultAdvance_base {
|
|
164
122
|
toJSON: () => any;
|
|
165
123
|
}
|
|
166
|
-
declare const MergeResultRebase_base: Schema.Class<MergeResultRebase, {
|
|
167
|
-
_tag: Schema.Literal<
|
|
168
|
-
newSyncState: typeof SyncState;
|
|
169
|
-
newEvents: Schema
|
|
170
|
-
/** Events which need to be rolled back */
|
|
171
|
-
rollbackEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
172
|
-
mergeContext: typeof MergeContext;
|
|
173
|
-
}, Schema.Struct.Encoded<{
|
|
174
|
-
_tag: Schema.Literal<["rebase"]>;
|
|
175
|
-
newSyncState: typeof SyncState;
|
|
176
|
-
newEvents: Schema.Array$<typeof LiveStoreEvent.EncodedWithMeta>;
|
|
124
|
+
declare const MergeResultRebase_base: Schema.Class<MergeResultRebase, Schema.Struct<{
|
|
125
|
+
readonly _tag: Schema.Literal<"rebase">;
|
|
126
|
+
readonly newSyncState: typeof SyncState;
|
|
127
|
+
readonly newEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
177
128
|
/** Events which need to be rolled back */
|
|
178
|
-
rollbackEvents: Schema
|
|
179
|
-
mergeContext: typeof MergeContext;
|
|
180
|
-
}>,
|
|
181
|
-
readonly _tag: "rebase";
|
|
182
|
-
} & {
|
|
183
|
-
readonly rollbackEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
184
|
-
} & {
|
|
185
|
-
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
186
|
-
} & {
|
|
187
|
-
readonly newSyncState: SyncState;
|
|
188
|
-
} & {
|
|
189
|
-
readonly mergeContext: MergeContext;
|
|
190
|
-
}, {}, {}>;
|
|
129
|
+
readonly rollbackEvents: Schema.$Array<typeof LiveStoreEvent.Client.EncodedWithMeta>;
|
|
130
|
+
readonly mergeContext: typeof MergeContext;
|
|
131
|
+
}>, {}>;
|
|
191
132
|
export declare class MergeResultRebase extends MergeResultRebase_base {
|
|
192
133
|
toJSON: () => any;
|
|
193
134
|
}
|
|
194
|
-
declare const MergeResultReject_base: Schema.Class<MergeResultReject, {
|
|
195
|
-
_tag: Schema.Literal<
|
|
135
|
+
declare const MergeResultReject_base: Schema.Class<MergeResultReject, Schema.Struct<{
|
|
136
|
+
readonly _tag: Schema.Literal<"reject">;
|
|
196
137
|
/** The minimum id that the new events must have */
|
|
197
|
-
expectedMinimumId: Schema.Struct<{
|
|
198
|
-
global: Schema.
|
|
199
|
-
client: Schema.
|
|
200
|
-
rebaseGeneration:
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
}, Schema.Struct.Encoded<{
|
|
204
|
-
_tag: Schema.Literal<["reject"]>;
|
|
205
|
-
/** The minimum id that the new events must have */
|
|
206
|
-
expectedMinimumId: Schema.Struct<{
|
|
207
|
-
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
208
|
-
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
209
|
-
rebaseGeneration: typeof Schema.Int;
|
|
210
|
-
}>;
|
|
211
|
-
mergeContext: typeof MergeContext;
|
|
212
|
-
}>, never, {
|
|
213
|
-
readonly _tag: "reject";
|
|
214
|
-
} & {
|
|
215
|
-
readonly mergeContext: MergeContext;
|
|
216
|
-
} & {
|
|
217
|
-
readonly expectedMinimumId: {
|
|
218
|
-
readonly global: number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">;
|
|
219
|
-
readonly client: number & import("effect/Brand").Brand<"ClientEventSequenceNumber">;
|
|
220
|
-
readonly rebaseGeneration: number;
|
|
138
|
+
readonly expectedMinimumId: Schema.Struct<{
|
|
139
|
+
readonly global: Schema.brand<Schema.Int, "GlobalEventSequenceNumber">;
|
|
140
|
+
readonly client: Schema.brand<Schema.Int, "ClientEventSequenceNumber">;
|
|
141
|
+
readonly rebaseGeneration: Schema.Int;
|
|
142
|
+
}> & {
|
|
143
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
221
144
|
};
|
|
222
|
-
|
|
145
|
+
readonly mergeContext: typeof MergeContext;
|
|
146
|
+
}>, {}>;
|
|
223
147
|
export declare class MergeResultReject extends MergeResultReject_base {
|
|
224
148
|
toJSON: () => any;
|
|
225
149
|
}
|
|
226
|
-
declare const
|
|
227
|
-
|
|
228
|
-
|
|
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]>;
|
|
240
|
-
export declare class MergeResult extends MergeResult_base {
|
|
241
|
-
}
|
|
242
|
-
export declare const payloadFromMergeResult: (mergeResult: typeof MergeResultAdvance.Type | typeof MergeResultRebase.Type) => typeof PayloadUpstream.Type;
|
|
243
|
-
export declare const merge: ({ syncState, payload, isClientEvent, isEqualEvent, ignoreClientEvents, }: {
|
|
150
|
+
export declare const MergeResult: Schema.Union<readonly [typeof MergeResultAdvance, typeof MergeResultRebase, typeof MergeResultReject]>;
|
|
151
|
+
export declare const payloadFromMergeResult: (mergeResult: MergeResultAdvance | MergeResultRebase) => typeof PayloadUpstream.Type;
|
|
152
|
+
export declare const merge: (args_0: {
|
|
244
153
|
syncState: SyncState;
|
|
245
154
|
payload: typeof Payload.Type;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
155
|
+
/**
|
|
156
|
+
* `LiveStoreEvent.Client.EncodedWithMeta` does not carry the event definition's
|
|
157
|
+
* `clientOnly` flag. The caller supplies this schema-aware predicate so `merge`
|
|
158
|
+
* can preserve the correct sequence-number shape when rebasing: client-only
|
|
159
|
+
* events advance the client component, synced events advance the global component.
|
|
160
|
+
*/
|
|
161
|
+
isClientOnlyEvent: (event: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Pending events are confirmed by comparing their logical encoded identity with
|
|
164
|
+
* upstream events. This is caller-supplied because comparing encoded args may
|
|
165
|
+
* require event-schema knowledge that the generic merge algorithm does not own.
|
|
166
|
+
* Implementations should ignore transport/runtime metadata.
|
|
167
|
+
*/
|
|
168
|
+
isEqualEvent: (a: LiveStoreEvent.Client.EncodedWithMeta, b: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
169
|
+
/**
|
|
170
|
+
* This is used in the leader which should ignore client events when
|
|
171
|
+
* receiving an upstream-advance payload
|
|
172
|
+
*/
|
|
173
|
+
ignoreClientOnlyEvents?: boolean;
|
|
174
|
+
}) => Effect.Effect<MergeResultAdvance | MergeResultRebase | MergeResultReject, never, never>;
|
|
251
175
|
/**
|
|
252
176
|
* Gets the index relative to `existingEvents` where the divergence point is
|
|
253
177
|
* by comparing each event in `existingEvents` to the corresponding event in `incomingEvents`
|
|
254
178
|
*/
|
|
255
|
-
export declare const findDivergencePoint: ({ existingEvents, incomingEvents, isEqualEvent,
|
|
256
|
-
existingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>;
|
|
257
|
-
incomingEvents: ReadonlyArray<LiveStoreEvent.EncodedWithMeta>;
|
|
258
|
-
isEqualEvent: (a: LiveStoreEvent.EncodedWithMeta, b: LiveStoreEvent.EncodedWithMeta) => boolean;
|
|
259
|
-
|
|
260
|
-
|
|
179
|
+
export declare const findDivergencePoint: ({ existingEvents, incomingEvents, isEqualEvent, isClientOnlyEvent, ignoreClientOnlyEvents, }: {
|
|
180
|
+
existingEvents: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>;
|
|
181
|
+
incomingEvents: ReadonlyArray<LiveStoreEvent.Client.EncodedWithMeta>;
|
|
182
|
+
isEqualEvent: (a: LiveStoreEvent.Client.EncodedWithMeta, b: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
183
|
+
isClientOnlyEvent: (event: LiveStoreEvent.Client.EncodedWithMeta) => boolean;
|
|
184
|
+
ignoreClientOnlyEvents: boolean;
|
|
261
185
|
}) => number;
|
|
262
186
|
export {};
|
|
263
187
|
//# sourceMappingURL=syncstate.d.ts.map
|