@livestore/common 0.4.0-dev.9 → 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 +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.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 +67 -15
- 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 +10 -12
- 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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client sequence numbers track events created locally before sync confirmation.
|
|
3
|
+
* Also contains the Composite type combining global and client sequence numbers with a rebase
|
|
4
|
+
* generation to fully identify an event's position in the eventlog.
|
|
5
|
+
*
|
|
6
|
+
* For event notation documentation, see: contributor-docs/events-notation.md
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { EventSequenceNumber } from '@livestore/common'
|
|
11
|
+
*
|
|
12
|
+
* // Client sequence number
|
|
13
|
+
* const clientSeq = EventSequenceNumber.Client.make(1)
|
|
14
|
+
*
|
|
15
|
+
* // Composite sequence number
|
|
16
|
+
* const composite: EventSequenceNumber.Client.Composite = {
|
|
17
|
+
* global: EventSequenceNumber.Global.make(5),
|
|
18
|
+
* client: EventSequenceNumber.Client.DEFAULT,
|
|
19
|
+
* rebaseGeneration: 0,
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export * as Client from './client.ts';
|
|
24
|
+
/**
|
|
25
|
+
* Global sequence numbers are assigned by the sync backend and represent
|
|
26
|
+
* the canonical ordering of events across all clients. They are monotonically
|
|
27
|
+
* increasing integers that establish the authoritative event timeline.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { EventSequenceNumber } from '@livestore/common'
|
|
32
|
+
*
|
|
33
|
+
* const globalSeq = EventSequenceNumber.Global.make(5)
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export * as Global from './global.ts';
|
|
37
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/schema/EventSequenceNumber/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client sequence numbers track events created locally before sync confirmation.
|
|
3
|
+
* Also contains the Composite type combining global and client sequence numbers with a rebase
|
|
4
|
+
* generation to fully identify an event's position in the eventlog.
|
|
5
|
+
*
|
|
6
|
+
* For event notation documentation, see: contributor-docs/events-notation.md
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { EventSequenceNumber } from '@livestore/common'
|
|
11
|
+
*
|
|
12
|
+
* // Client sequence number
|
|
13
|
+
* const clientSeq = EventSequenceNumber.Client.make(1)
|
|
14
|
+
*
|
|
15
|
+
* // Composite sequence number
|
|
16
|
+
* const composite: EventSequenceNumber.Client.Composite = {
|
|
17
|
+
* global: EventSequenceNumber.Global.make(5),
|
|
18
|
+
* client: EventSequenceNumber.Client.DEFAULT,
|
|
19
|
+
* rebaseGeneration: 0,
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export * as Client from "./client.js";
|
|
24
|
+
/**
|
|
25
|
+
* Global sequence numbers are assigned by the sync backend and represent
|
|
26
|
+
* the canonical ordering of events across all clients. They are monotonically
|
|
27
|
+
* increasing integers that establish the authoritative event timeline.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { EventSequenceNumber } from '@livestore/common'
|
|
32
|
+
*
|
|
33
|
+
* const globalSeq = EventSequenceNumber.Global.make(5)
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export * as Global from "./global.js";
|
|
37
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/schema/EventSequenceNumber/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
2
1
|
import { expect } from 'vitest';
|
|
2
|
+
import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
3
3
|
import { EventSequenceNumber } from "./mod.js";
|
|
4
4
|
Vitest.describe('EventSequenceNumber', () => {
|
|
5
5
|
Vitest.test('nextPair (no rebase)', () => {
|
|
6
|
-
const e_0_0 = EventSequenceNumber.make({ global: 0, client: 0 });
|
|
7
|
-
expect(EventSequenceNumber.nextPair({ seqNum: e_0_0, isClient: false }).seqNum).toStrictEqual({
|
|
6
|
+
const e_0_0 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 0 });
|
|
7
|
+
expect(EventSequenceNumber.Client.nextPair({ seqNum: e_0_0, isClient: false }).seqNum).toStrictEqual({
|
|
8
8
|
global: 1,
|
|
9
9
|
client: 0,
|
|
10
10
|
rebaseGeneration: 0,
|
|
11
11
|
});
|
|
12
|
-
expect(EventSequenceNumber.nextPair({ seqNum: e_0_0, isClient: true }).seqNum).toStrictEqual({
|
|
12
|
+
expect(EventSequenceNumber.Client.nextPair({ seqNum: e_0_0, isClient: true }).seqNum).toStrictEqual({
|
|
13
13
|
global: 0,
|
|
14
14
|
client: 1,
|
|
15
15
|
rebaseGeneration: 0,
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
18
|
Vitest.test('nextPair (rebase)', () => {
|
|
19
|
-
const e_0_0 = EventSequenceNumber.make({ global: 0, client: 0 });
|
|
20
|
-
expect(EventSequenceNumber.nextPair({ seqNum: e_0_0, isClient: false, rebaseGeneration: 1 }).seqNum).toStrictEqual({
|
|
19
|
+
const e_0_0 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 0 });
|
|
20
|
+
expect(EventSequenceNumber.Client.nextPair({ seqNum: e_0_0, isClient: false, rebaseGeneration: 1 }).seqNum).toStrictEqual({
|
|
21
21
|
global: 1,
|
|
22
22
|
client: 0,
|
|
23
|
-
rebaseGeneration:
|
|
23
|
+
rebaseGeneration: 1,
|
|
24
24
|
});
|
|
25
|
-
expect(EventSequenceNumber.nextPair({ seqNum: e_0_0, isClient: true, rebaseGeneration: 1 }).seqNum).toStrictEqual({
|
|
25
|
+
expect(EventSequenceNumber.Client.nextPair({ seqNum: e_0_0, isClient: true, rebaseGeneration: 1 }).seqNum).toStrictEqual({
|
|
26
26
|
global: 0,
|
|
27
27
|
client: 1,
|
|
28
28
|
rebaseGeneration: 1,
|
|
29
29
|
});
|
|
30
|
-
const e_0_0_g1 = EventSequenceNumber.make({ global: 0, client: 0, rebaseGeneration: 2 });
|
|
31
|
-
expect(EventSequenceNumber.nextPair({ seqNum: e_0_0_g1, isClient: false }).seqNum).toStrictEqual({
|
|
30
|
+
const e_0_0_g1 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 0, rebaseGeneration: 2 });
|
|
31
|
+
expect(EventSequenceNumber.Client.nextPair({ seqNum: e_0_0_g1, isClient: false }).seqNum).toStrictEqual({
|
|
32
32
|
global: 1,
|
|
33
33
|
client: 0,
|
|
34
|
-
rebaseGeneration:
|
|
34
|
+
rebaseGeneration: 2,
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
Vitest.test('toString', () => {
|
|
38
|
-
expect(EventSequenceNumber.toString(EventSequenceNumber.make({ global: 0, client: 0 }))).toBe('e0');
|
|
39
|
-
expect(EventSequenceNumber.toString(EventSequenceNumber.make({ global: 0, client: 0, rebaseGeneration: 1 }))).toBe('e0r1');
|
|
40
|
-
expect(EventSequenceNumber.toString(EventSequenceNumber.make({ global: 0, client: 1 }))).toBe('e0
|
|
41
|
-
expect(EventSequenceNumber.toString(EventSequenceNumber.make({ global: 0, client: 1, rebaseGeneration: 1 }))).toBe('e0
|
|
42
|
-
expect(EventSequenceNumber.toString(EventSequenceNumber.make({ global: 5, client: 3, rebaseGeneration: 2 }))).toBe('e5
|
|
38
|
+
expect(EventSequenceNumber.Client.toString(EventSequenceNumber.Client.Composite.make({ global: 0, client: 0 }))).toBe('e0');
|
|
39
|
+
expect(EventSequenceNumber.Client.toString(EventSequenceNumber.Client.Composite.make({ global: 0, client: 0, rebaseGeneration: 1 }))).toBe('e0r1');
|
|
40
|
+
expect(EventSequenceNumber.Client.toString(EventSequenceNumber.Client.Composite.make({ global: 0, client: 1 }))).toBe('e0.1');
|
|
41
|
+
expect(EventSequenceNumber.Client.toString(EventSequenceNumber.Client.Composite.make({ global: 0, client: 1, rebaseGeneration: 1 }))).toBe('e0.1r1');
|
|
42
|
+
expect(EventSequenceNumber.Client.toString(EventSequenceNumber.Client.Composite.make({ global: 5, client: 3, rebaseGeneration: 2 }))).toBe('e5.3r2');
|
|
43
43
|
});
|
|
44
44
|
Vitest.test('fromString', () => {
|
|
45
45
|
// Basic cases
|
|
46
|
-
expect(EventSequenceNumber.fromString('e0')).toStrictEqual(EventSequenceNumber.make({ global: 0, client: 0 }));
|
|
47
|
-
expect(EventSequenceNumber.fromString('e0r1')).toStrictEqual(EventSequenceNumber.make({ global: 0, client: 0, rebaseGeneration: 1 }));
|
|
48
|
-
expect(EventSequenceNumber.fromString('e0
|
|
49
|
-
expect(EventSequenceNumber.fromString('e0
|
|
50
|
-
expect(EventSequenceNumber.fromString('e5
|
|
46
|
+
expect(EventSequenceNumber.Client.fromString('e0')).toStrictEqual(EventSequenceNumber.Client.Composite.make({ global: 0, client: 0 }));
|
|
47
|
+
expect(EventSequenceNumber.Client.fromString('e0r1')).toStrictEqual(EventSequenceNumber.Client.Composite.make({ global: 0, client: 0, rebaseGeneration: 1 }));
|
|
48
|
+
expect(EventSequenceNumber.Client.fromString('e0.1')).toStrictEqual(EventSequenceNumber.Client.Composite.make({ global: 0, client: 1 }));
|
|
49
|
+
expect(EventSequenceNumber.Client.fromString('e0.1r1')).toStrictEqual(EventSequenceNumber.Client.Composite.make({ global: 0, client: 1, rebaseGeneration: 1 }));
|
|
50
|
+
expect(EventSequenceNumber.Client.fromString('e5.3r2')).toStrictEqual(EventSequenceNumber.Client.Composite.make({ global: 5, client: 3, rebaseGeneration: 2 }));
|
|
51
51
|
// Error cases
|
|
52
|
-
expect(() => EventSequenceNumber.fromString('0')).toThrow('Invalid event sequence number string: must start with "e"');
|
|
53
|
-
expect(() => EventSequenceNumber.fromString('eabc')).toThrow('Invalid event sequence number string: invalid number format');
|
|
54
|
-
expect(() => EventSequenceNumber.fromString('e0
|
|
55
|
-
expect(() => EventSequenceNumber.fromString('e0rabc')).toThrow('Invalid event sequence number string: invalid number format');
|
|
52
|
+
expect(() => EventSequenceNumber.Client.fromString('0')).toThrow('Invalid event sequence number string: must start with "e"');
|
|
53
|
+
expect(() => EventSequenceNumber.Client.fromString('eabc')).toThrow('Invalid event sequence number string: invalid number format');
|
|
54
|
+
expect(() => EventSequenceNumber.Client.fromString('e0.abc')).toThrow('Invalid event sequence number string: invalid number format');
|
|
55
|
+
expect(() => EventSequenceNumber.Client.fromString('e0rabc')).toThrow('Invalid event sequence number string: invalid number format');
|
|
56
56
|
});
|
|
57
57
|
Vitest.test('toString/fromString roundtrip', () => {
|
|
58
58
|
const testCases = [
|
|
@@ -64,33 +64,33 @@ Vitest.describe('EventSequenceNumber', () => {
|
|
|
64
64
|
{ global: 100, client: 50, rebaseGeneration: 10 },
|
|
65
65
|
];
|
|
66
66
|
for (const testCase of testCases) {
|
|
67
|
-
const original = EventSequenceNumber.make(testCase);
|
|
68
|
-
const str = EventSequenceNumber.toString(original);
|
|
69
|
-
const parsed = EventSequenceNumber.fromString(str);
|
|
67
|
+
const original = EventSequenceNumber.Client.Composite.make(testCase);
|
|
68
|
+
const str = EventSequenceNumber.Client.toString(original);
|
|
69
|
+
const parsed = EventSequenceNumber.Client.fromString(str);
|
|
70
70
|
expect(parsed).toStrictEqual(original);
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
Vitest.test('compare', () => {
|
|
74
|
-
const e_0_0_r0 = EventSequenceNumber.make({ global: 0, client: 0, rebaseGeneration: 0 });
|
|
75
|
-
const e_0_0_r1 = EventSequenceNumber.make({ global: 0, client: 0, rebaseGeneration: 1 });
|
|
76
|
-
const e_0_1_r0 = EventSequenceNumber.make({ global: 0, client: 1, rebaseGeneration: 0 });
|
|
77
|
-
const e_0_1_r1 = EventSequenceNumber.make({ global: 0, client: 1, rebaseGeneration: 1 });
|
|
78
|
-
const e_1_0_r0 = EventSequenceNumber.make({ global: 1, client: 0, rebaseGeneration: 0 });
|
|
79
|
-
const e_1_1_r0 = EventSequenceNumber.make({ global: 1, client: 1, rebaseGeneration: 0 });
|
|
74
|
+
const e_0_0_r0 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 0, rebaseGeneration: 0 });
|
|
75
|
+
const e_0_0_r1 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 0, rebaseGeneration: 1 });
|
|
76
|
+
const e_0_1_r0 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 1, rebaseGeneration: 0 });
|
|
77
|
+
const e_0_1_r1 = EventSequenceNumber.Client.Composite.make({ global: 0, client: 1, rebaseGeneration: 1 });
|
|
78
|
+
const e_1_0_r0 = EventSequenceNumber.Client.Composite.make({ global: 1, client: 0, rebaseGeneration: 0 });
|
|
79
|
+
const e_1_1_r0 = EventSequenceNumber.Client.Composite.make({ global: 1, client: 1, rebaseGeneration: 0 });
|
|
80
80
|
// Global comparison (strongest level)
|
|
81
|
-
expect(EventSequenceNumber.compare(e_0_0_r0, e_1_0_r0)).toBeLessThan(0);
|
|
82
|
-
expect(EventSequenceNumber.compare(e_1_0_r0, e_0_0_r0)).toBeGreaterThan(0);
|
|
83
|
-
expect(EventSequenceNumber.compare(e_0_1_r1, e_1_0_r0)).toBeLessThan(0); // global overrides client and rebase
|
|
81
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r0, e_1_0_r0)).toBeLessThan(0);
|
|
82
|
+
expect(EventSequenceNumber.Client.compare(e_1_0_r0, e_0_0_r0)).toBeGreaterThan(0);
|
|
83
|
+
expect(EventSequenceNumber.Client.compare(e_0_1_r1, e_1_0_r0)).toBeLessThan(0); // global overrides client and rebase
|
|
84
84
|
// Client comparison (second level)
|
|
85
|
-
expect(EventSequenceNumber.compare(e_0_0_r0, e_0_1_r0)).toBeLessThan(0);
|
|
86
|
-
expect(EventSequenceNumber.compare(e_0_1_r0, e_0_0_r0)).toBeGreaterThan(0);
|
|
87
|
-
expect(EventSequenceNumber.compare(e_0_0_r1, e_0_1_r0)).toBeLessThan(0); // client overrides rebase
|
|
85
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r0, e_0_1_r0)).toBeLessThan(0);
|
|
86
|
+
expect(EventSequenceNumber.Client.compare(e_0_1_r0, e_0_0_r0)).toBeGreaterThan(0);
|
|
87
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r1, e_0_1_r0)).toBeLessThan(0); // client overrides rebase
|
|
88
88
|
// Rebase generation comparison (weakest level)
|
|
89
|
-
expect(EventSequenceNumber.compare(e_0_0_r0, e_0_0_r1)).toBeLessThan(0);
|
|
90
|
-
expect(EventSequenceNumber.compare(e_0_0_r1, e_0_0_r0)).toBeGreaterThan(0);
|
|
89
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r0, e_0_0_r1)).toBeLessThan(0);
|
|
90
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r1, e_0_0_r0)).toBeGreaterThan(0);
|
|
91
91
|
// Equal comparison
|
|
92
|
-
expect(EventSequenceNumber.compare(e_0_0_r0, e_0_0_r0)).toBe(0);
|
|
93
|
-
expect(EventSequenceNumber.compare(e_1_1_r0, e_1_1_r0)).toBe(0);
|
|
92
|
+
expect(EventSequenceNumber.Client.compare(e_0_0_r0, e_0_0_r0)).toBe(0);
|
|
93
|
+
expect(EventSequenceNumber.Client.compare(e_1_1_r0, e_1_1_r0)).toBe(0);
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
96
|
//# sourceMappingURL=EventSequenceNumber.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventSequenceNumber.test.js","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"EventSequenceNumber.test.js","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,123 +1,79 @@
|
|
|
1
1
|
import { Option, Schema } from '@livestore/utils/effect';
|
|
2
|
-
import type { EventDef
|
|
3
|
-
import * as EventSequenceNumber from '
|
|
4
|
-
import type { LiveStoreSchema } from '
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
type PartialEncoded<TEventDef extends EventDef.Any> = {
|
|
11
|
-
name: TEventDef['name'];
|
|
12
|
-
args: Schema.Schema.Encoded<TEventDef['schema']>;
|
|
13
|
-
};
|
|
14
|
-
type Decoded<TEventDef extends EventDef.Any> = {
|
|
15
|
-
name: TEventDef['name'];
|
|
16
|
-
args: Schema.Schema.Type<TEventDef['schema']>;
|
|
17
|
-
seqNum: EventSequenceNumber.EventSequenceNumber;
|
|
18
|
-
parentSeqNum: EventSequenceNumber.EventSequenceNumber;
|
|
19
|
-
clientId: string;
|
|
20
|
-
sessionId: string;
|
|
21
|
-
};
|
|
22
|
-
type Encoded<TEventDef extends EventDef.Any> = {
|
|
23
|
-
name: TEventDef['name'];
|
|
24
|
-
args: Schema.Schema.Encoded<TEventDef['schema']>;
|
|
25
|
-
seqNum: EventSequenceNumber.EventSequenceNumber;
|
|
26
|
-
parentSeqNum: EventSequenceNumber.EventSequenceNumber;
|
|
27
|
-
clientId: string;
|
|
28
|
-
sessionId: string;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
export type AnyDecoded = ForEventDef.Decoded<EventDef.Any>;
|
|
32
|
-
export declare const AnyDecoded: Schema.Struct<{
|
|
2
|
+
import type { EventDef } from '../EventDef/mod.ts';
|
|
3
|
+
import * as EventSequenceNumber from '../EventSequenceNumber/mod.ts';
|
|
4
|
+
import type { LiveStoreSchema } from '../schema.ts';
|
|
5
|
+
import type * as ForEventDef from './for-event-def.ts';
|
|
6
|
+
import type * as Global from './global.ts';
|
|
7
|
+
/** Effect Schema for client events with decoded args. */
|
|
8
|
+
export declare const Decoded: Schema.Struct<{
|
|
33
9
|
name: typeof Schema.String;
|
|
34
10
|
args: typeof Schema.Any;
|
|
35
11
|
seqNum: Schema.Struct<{
|
|
36
12
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
37
13
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
38
14
|
rebaseGeneration: typeof Schema.Int;
|
|
39
|
-
}
|
|
15
|
+
}> & {
|
|
16
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
17
|
+
};
|
|
40
18
|
parentSeqNum: Schema.Struct<{
|
|
41
19
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
42
20
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
43
21
|
rebaseGeneration: typeof Schema.Int;
|
|
44
|
-
}
|
|
22
|
+
}> & {
|
|
23
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
24
|
+
};
|
|
45
25
|
clientId: typeof Schema.String;
|
|
46
26
|
sessionId: typeof Schema.String;
|
|
47
27
|
}>;
|
|
48
|
-
|
|
49
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Effect Schema for client events with encoded args.
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* // Confirmed event (client=0)
|
|
33
|
+
* const event: LiveStoreEvent.Client.Encoded = {
|
|
34
|
+
* name: 'todoCreated-v1',
|
|
35
|
+
* args: { id: 'abc', text: 'Buy milk' },
|
|
36
|
+
* seqNum: { global: 5, client: 0, rebaseGeneration: 0 },
|
|
37
|
+
* parentSeqNum: { global: 4, client: 0, rebaseGeneration: 0 },
|
|
38
|
+
* clientId: 'client-xyz',
|
|
39
|
+
* sessionId: 'session-123'
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* // Pending local event (client=1, not yet synced)
|
|
43
|
+
* const pending: LiveStoreEvent.Client.Encoded = {
|
|
44
|
+
* ...event,
|
|
45
|
+
* seqNum: { global: 5, client: 1, rebaseGeneration: 0 }, // e5.1
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare const Encoded: Schema.Struct<{
|
|
50
50
|
name: typeof Schema.String;
|
|
51
51
|
args: typeof Schema.Any;
|
|
52
52
|
seqNum: Schema.Struct<{
|
|
53
53
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
54
54
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
55
55
|
rebaseGeneration: typeof Schema.Int;
|
|
56
|
-
}
|
|
56
|
+
}> & {
|
|
57
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
58
|
+
};
|
|
57
59
|
parentSeqNum: Schema.Struct<{
|
|
58
60
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
59
61
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
60
62
|
rebaseGeneration: typeof Schema.Int;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}>;
|
|
65
|
-
export declare const AnyEncodedGlobal: Schema.Struct<{
|
|
66
|
-
name: typeof Schema.String;
|
|
67
|
-
args: typeof Schema.Any;
|
|
68
|
-
seqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
69
|
-
parentSeqNum: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
63
|
+
}> & {
|
|
64
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
65
|
+
};
|
|
70
66
|
clientId: typeof Schema.String;
|
|
71
67
|
sessionId: typeof Schema.String;
|
|
72
68
|
}>;
|
|
73
|
-
|
|
74
|
-
export type
|
|
75
|
-
|
|
76
|
-
export
|
|
77
|
-
|
|
78
|
-
args: typeof Schema.Any;
|
|
79
|
-
}>;
|
|
80
|
-
export type PartialForSchema<TSchema extends LiveStoreSchema> = {
|
|
81
|
-
[K in keyof TSchema['_EventDefMapType']]: ForEventDef.PartialDecoded<TSchema['_EventDefMapType'][K]>;
|
|
82
|
-
}[keyof TSchema['_EventDefMapType']];
|
|
69
|
+
/** Event with composite sequence numbers and decoded (native TypeScript) args. */
|
|
70
|
+
export type Decoded = ForEventDef.Decoded<EventDef.Any>;
|
|
71
|
+
/** Event with composite sequence numbers and encoded (serialized) args. */
|
|
72
|
+
export type Encoded = ForEventDef.Encoded<EventDef.Any>;
|
|
73
|
+
/** Union of all client event types for a given schema (type-safe event discrimination). */
|
|
83
74
|
export type ForSchema<TSchema extends LiveStoreSchema> = {
|
|
84
75
|
[K in keyof TSchema['_EventDefMapType']]: ForEventDef.Decoded<TSchema['_EventDefMapType'][K]>;
|
|
85
76
|
}[keyof TSchema['_EventDefMapType']];
|
|
86
|
-
export declare const isPartialEventDef: (event: AnyDecoded | PartialAnyDecoded) => event is PartialAnyDecoded;
|
|
87
|
-
export type ForEventDefRecord<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
|
|
88
|
-
[K in keyof TEventDefRecord]: {
|
|
89
|
-
name: K;
|
|
90
|
-
args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
|
|
91
|
-
seqNum: EventSequenceNumber.EventSequenceNumber;
|
|
92
|
-
parentSeqNum: EventSequenceNumber.EventSequenceNumber;
|
|
93
|
-
clientId: string;
|
|
94
|
-
sessionId: string;
|
|
95
|
-
};
|
|
96
|
-
}[keyof TEventDefRecord], {
|
|
97
|
-
[K in keyof TEventDefRecord]: {
|
|
98
|
-
name: K;
|
|
99
|
-
args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
|
|
100
|
-
seqNum: EventSequenceNumber.EventSequenceNumber;
|
|
101
|
-
parentSeqNum: EventSequenceNumber.EventSequenceNumber;
|
|
102
|
-
clientId: string;
|
|
103
|
-
sessionId: string;
|
|
104
|
-
};
|
|
105
|
-
}[keyof TEventDefRecord]>;
|
|
106
|
-
export type EventDefPartialSchema<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
|
|
107
|
-
[K in keyof TEventDefRecord]: {
|
|
108
|
-
name: K;
|
|
109
|
-
args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
|
|
110
|
-
};
|
|
111
|
-
}[keyof TEventDefRecord], {
|
|
112
|
-
[K in keyof TEventDefRecord]: {
|
|
113
|
-
name: K;
|
|
114
|
-
args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
|
|
115
|
-
};
|
|
116
|
-
}[keyof TEventDefRecord]>;
|
|
117
|
-
export declare const makeEventDefSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
|
118
|
-
export declare const makeEventDefPartialSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => EventDefPartialSchema<TSchema["_EventDefMapType"]>;
|
|
119
|
-
export declare const makeEventDefSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
|
120
|
-
export declare const encodedFromGlobal: (event: AnyEncodedGlobal) => AnyEncoded;
|
|
121
77
|
declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
122
78
|
name: typeof Schema.String;
|
|
123
79
|
args: typeof Schema.Any;
|
|
@@ -125,12 +81,16 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
|
125
81
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
126
82
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
127
83
|
rebaseGeneration: typeof Schema.Int;
|
|
128
|
-
}
|
|
84
|
+
}> & {
|
|
85
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
86
|
+
};
|
|
129
87
|
parentSeqNum: Schema.Struct<{
|
|
130
88
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
131
89
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
132
90
|
rebaseGeneration: typeof Schema.Int;
|
|
133
|
-
}
|
|
91
|
+
}> & {
|
|
92
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
93
|
+
};
|
|
134
94
|
clientId: typeof Schema.String;
|
|
135
95
|
sessionId: typeof Schema.String;
|
|
136
96
|
meta: Schema.PropertySignature<":", {
|
|
@@ -159,20 +119,20 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
|
159
119
|
syncMetadata: {
|
|
160
120
|
readonly _tag: "None";
|
|
161
121
|
} | {
|
|
162
|
-
readonly value: Schema.JsonValue;
|
|
163
122
|
readonly _tag: "Some";
|
|
123
|
+
readonly value: Schema.JsonValue;
|
|
164
124
|
};
|
|
165
125
|
materializerHashLeader: {
|
|
166
126
|
readonly _tag: "None";
|
|
167
127
|
} | {
|
|
168
|
-
readonly value: number;
|
|
169
128
|
readonly _tag: "Some";
|
|
129
|
+
readonly value: number;
|
|
170
130
|
};
|
|
171
131
|
materializerHashSession: {
|
|
172
132
|
readonly _tag: "None";
|
|
173
133
|
} | {
|
|
174
|
-
readonly value: number;
|
|
175
134
|
readonly _tag: "Some";
|
|
135
|
+
readonly value: number;
|
|
176
136
|
};
|
|
177
137
|
} | undefined, true, never>;
|
|
178
138
|
}, Schema.Struct.Encoded<{
|
|
@@ -182,12 +142,16 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
|
182
142
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
183
143
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
184
144
|
rebaseGeneration: typeof Schema.Int;
|
|
185
|
-
}
|
|
145
|
+
}> & {
|
|
146
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
147
|
+
};
|
|
186
148
|
parentSeqNum: Schema.Struct<{
|
|
187
149
|
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
188
150
|
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventSequenceNumber">, number, never>;
|
|
189
151
|
rebaseGeneration: typeof Schema.Int;
|
|
190
|
-
}
|
|
152
|
+
}> & {
|
|
153
|
+
make: (seqNum: EventSequenceNumber.Client.CompositeInput) => EventSequenceNumber.Client.Composite;
|
|
154
|
+
};
|
|
191
155
|
clientId: typeof Schema.String;
|
|
192
156
|
sessionId: typeof Schema.String;
|
|
193
157
|
meta: Schema.PropertySignature<":", {
|
|
@@ -216,20 +180,20 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
|
216
180
|
syncMetadata: {
|
|
217
181
|
readonly _tag: "None";
|
|
218
182
|
} | {
|
|
219
|
-
readonly value: Schema.JsonValue;
|
|
220
183
|
readonly _tag: "Some";
|
|
184
|
+
readonly value: Schema.JsonValue;
|
|
221
185
|
};
|
|
222
186
|
materializerHashLeader: {
|
|
223
187
|
readonly _tag: "None";
|
|
224
188
|
} | {
|
|
225
|
-
readonly value: number;
|
|
226
189
|
readonly _tag: "Some";
|
|
190
|
+
readonly value: number;
|
|
227
191
|
};
|
|
228
192
|
materializerHashSession: {
|
|
229
193
|
readonly _tag: "None";
|
|
230
194
|
} | {
|
|
231
|
-
readonly value: number;
|
|
232
195
|
readonly _tag: "Some";
|
|
196
|
+
readonly value: number;
|
|
233
197
|
};
|
|
234
198
|
} | undefined, true, never>;
|
|
235
199
|
}>, never, {
|
|
@@ -268,7 +232,12 @@ declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
|
|
268
232
|
materializerHashSession: Option.Option<number>;
|
|
269
233
|
};
|
|
270
234
|
}, {}, {}>;
|
|
271
|
-
/**
|
|
235
|
+
/**
|
|
236
|
+
* Internal event representation with metadata for sync processing.
|
|
237
|
+
* Includes changeset data and materializer hashes for conflict detection and rebasing.
|
|
238
|
+
*
|
|
239
|
+
* Note: This class is exported for internal use. The preferred access is via `LiveStoreEvent.Client.EncodedWithMeta`.
|
|
240
|
+
*/
|
|
272
241
|
export declare class EncodedWithMeta extends EncodedWithMeta_base {
|
|
273
242
|
toJSON: () => any;
|
|
274
243
|
/**
|
|
@@ -277,30 +246,52 @@ export declare class EncodedWithMeta extends EncodedWithMeta_base {
|
|
|
277
246
|
* the resulting event num will be e4 → e3
|
|
278
247
|
*
|
|
279
248
|
* Example: (client event)
|
|
280
|
-
* For event e2
|
|
281
|
-
* the resulting event num will be e3
|
|
249
|
+
* For event e2.1 → e2 which should be rebased on event e3 → e2
|
|
250
|
+
* the resulting event num will be e3.1 → e3
|
|
282
251
|
*
|
|
283
|
-
* Syntax: e2
|
|
252
|
+
* Syntax: e2.2 → e2.1
|
|
284
253
|
* ^ ^ ^ ^
|
|
285
254
|
* | | | +- client parent number
|
|
286
255
|
* | | +--- global parent number
|
|
287
256
|
* | +-- client number
|
|
288
257
|
* +---- global number
|
|
289
|
-
* Client num is
|
|
258
|
+
* Client num is omitted for global events
|
|
290
259
|
*/
|
|
291
260
|
rebase: ({ parentSeqNum, isClient, rebaseGeneration, }: {
|
|
292
|
-
parentSeqNum: EventSequenceNumber.
|
|
261
|
+
parentSeqNum: EventSequenceNumber.Client.Composite;
|
|
293
262
|
isClient: boolean;
|
|
294
263
|
rebaseGeneration: number;
|
|
295
264
|
}) => EncodedWithMeta;
|
|
296
|
-
static fromGlobal: (event:
|
|
265
|
+
static fromGlobal: (event: Global.Encoded, meta: {
|
|
297
266
|
syncMetadata: Option.Option<Schema.JsonValue>;
|
|
298
267
|
materializerHashLeader: Option.Option<number>;
|
|
299
268
|
materializerHashSession: Option.Option<number>;
|
|
300
269
|
}) => EncodedWithMeta;
|
|
301
|
-
toGlobal: () =>
|
|
270
|
+
toGlobal: () => Global.Encoded;
|
|
302
271
|
}
|
|
303
|
-
/**
|
|
304
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Structural equality check for client events. Compares seqNum (global + client),
|
|
274
|
+
* name, clientId, sessionId, and args. The `meta` field is ignored.
|
|
275
|
+
*
|
|
276
|
+
* Args are compared in their JSON-canonical form: locally-encoded events with
|
|
277
|
+
* `Schema.UndefinedOr` (or loose `Schema.optional`) fields produce
|
|
278
|
+
* `{ ..., flag: undefined }`, but JSON wire transport drops the key. Without
|
|
279
|
+
* canonicalizing, the local pending event compares unequal to its
|
|
280
|
+
* wire-roundtripped counterpart and the sync merge falsely takes the rebase
|
|
281
|
+
* path, surfacing as `MaterializerHashMismatchError` for state-dependent
|
|
282
|
+
* materializers.
|
|
283
|
+
*/
|
|
284
|
+
export declare const isEqualEncoded: (a: Encoded, b: Encoded) => boolean;
|
|
285
|
+
/**
|
|
286
|
+
* Creates an Effect Schema union for all event types in a schema (with composite sequence numbers).
|
|
287
|
+
* @example
|
|
288
|
+
* ```ts
|
|
289
|
+
* const eventSchema = LiveStoreEvent.Client.makeSchema(schema)
|
|
290
|
+
* const event = Schema.decodeUnknownSync(eventSchema)(rawEvent)
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
export declare const makeSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
|
|
294
|
+
/** Memoized `makeSchema` - caches the generated schema by reference. */
|
|
295
|
+
export declare const makeSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDef.ForRecord<TSchema["_EventDefMapType"]>;
|
|
305
296
|
export {};
|
|
306
|
-
//# sourceMappingURL=
|
|
297
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/schema/LiveStoreEvent/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,mBAAmB,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAE1C,yDAAyD;AACzD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;EAOsC,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;EAOsC,CAAA;AAE1D,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAEvD,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAEvD,2FAA2F;AAC3F,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,eAAe,IAAI;KACtD,CAAC,IAAI,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9F,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpC;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,oBAuCnC;IACA,MAAM,QAAO,GAAG,CASf;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,GAAI,+CAIP;QACD,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAA;QAClD,QAAQ,EAAE,OAAO,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAA;KACzB,qBAIG;IAEJ,MAAM,CAAC,UAAU,GACf,OAAO,MAAM,CAAC,OAAO,EACrB,MAAM;QACJ,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC7C,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7C,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KAC/C,qBAoBC;IAEJ,QAAQ,QAAO,MAAM,CAAC,OAAO,CAO3B;CACH;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,YAMU,CAAA;AAK/D;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,eAAe,EACxD,QAAQ,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAYM,CAAA;AAE1D,wEAAwE;AACxE,eAAO,MAAM,cAAc,GAjBA,OAAO,SAAS,eAAe,UAChD,OAAO,KACd,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAeE,CAAA"}
|