@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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ReadonlyArray as EffectArray } from '@livestore/utils/effect'
|
|
2
|
+
import { Effect, Schema } from '@livestore/utils/effect'
|
|
3
|
+
|
|
4
|
+
const textEncoder = new TextEncoder()
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Configuration describing how to break an array batch into smaller payload-safe batches.
|
|
8
|
+
*/
|
|
9
|
+
export interface ChunkingOptions<A> {
|
|
10
|
+
/** Maximum number of items that may appear in any emitted batch. */
|
|
11
|
+
readonly maxItems: number
|
|
12
|
+
/** Maximum encoded byte size allowed for any emitted batch. */
|
|
13
|
+
readonly maxBytes: number
|
|
14
|
+
/**
|
|
15
|
+
* Callback that produces a JSON-serialisable structure whose byte size should
|
|
16
|
+
* fit within {@link maxBytes}. This lets callers control framing overhead.
|
|
17
|
+
*/
|
|
18
|
+
readonly encode: (items: ReadonlyArray<A>) => unknown
|
|
19
|
+
/**
|
|
20
|
+
* Optional custom measurement function. When provided it overrides the
|
|
21
|
+
* default {@link JSON.stringify}-based measurement logic.
|
|
22
|
+
*/
|
|
23
|
+
readonly measure?: (items: ReadonlyArray<A>) => number
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export class OversizeChunkItemError extends Schema.TaggedError<OversizeChunkItemError>(
|
|
27
|
+
'~@livestore/common/OversizeChunkItemError',
|
|
28
|
+
)('OversizeChunkItemError', {
|
|
29
|
+
size: Schema.Finite,
|
|
30
|
+
maxBytes: Schema.Finite,
|
|
31
|
+
}) {}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Derives a function that splits an input array into sub-arrays confined by
|
|
35
|
+
* both item count and encoded byte size limits. Designed for stream boundaries
|
|
36
|
+
* and transports with strict frame caps (e.g. Cloudflare hibernated WebSockets).
|
|
37
|
+
*/
|
|
38
|
+
export const splitArrayBySize =
|
|
39
|
+
<A>(options: ChunkingOptions<A>) =>
|
|
40
|
+
(
|
|
41
|
+
items: EffectArray.NonEmptyReadonlyArray<A>,
|
|
42
|
+
): Effect.Effect<EffectArray.NonEmptyArray<ReadonlyArray<A>>, OversizeChunkItemError> =>
|
|
43
|
+
Effect.gen(function* () {
|
|
44
|
+
const maxItems = Math.max(1, options.maxItems)
|
|
45
|
+
const maxBytes = Math.max(1, options.maxBytes)
|
|
46
|
+
const encode = options.encode
|
|
47
|
+
const measure = options.measure
|
|
48
|
+
|
|
49
|
+
const computeSize = (items: ReadonlyArray<A>) => {
|
|
50
|
+
if (measure !== undefined) {
|
|
51
|
+
return measure(items)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const encoded = encode(items)
|
|
55
|
+
return textEncoder.encode(JSON.stringify(encoded)).byteLength
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const [first, ...rest] = items
|
|
59
|
+
let current: EffectArray.NonEmptyArray<A> = [first]
|
|
60
|
+
const result: EffectArray.NonEmptyArray<ReadonlyArray<A>> = [current]
|
|
61
|
+
|
|
62
|
+
if (computeSize(current) > maxBytes) {
|
|
63
|
+
return yield* new OversizeChunkItemError({ size: computeSize(current), maxBytes })
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
for (const item of rest) {
|
|
67
|
+
current.push(item)
|
|
68
|
+
const exceedsLimit = current.length > maxItems || computeSize(current) > maxBytes
|
|
69
|
+
|
|
70
|
+
if (exceedsLimit === true) {
|
|
71
|
+
// Remove the item we just added; the previous batch was already recorded in `result`.
|
|
72
|
+
current.splice(current.length - 1, 1)
|
|
73
|
+
current = [item]
|
|
74
|
+
|
|
75
|
+
const singleItemTooLarge = computeSize(current) > maxBytes
|
|
76
|
+
if (singleItemTooLarge === true || current.length > maxItems) {
|
|
77
|
+
return yield* new OversizeChunkItemError({ size: computeSize(current), maxBytes })
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
result.push(current)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return result
|
|
85
|
+
})
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { Effect } from '@livestore/utils/effect'
|
|
2
2
|
|
|
3
3
|
import { EventSequenceNumber, type LiveStoreEvent } from '../schema/mod.ts'
|
|
4
|
-
import {
|
|
4
|
+
import { ServerAheadError } from './sync.ts'
|
|
5
5
|
|
|
6
6
|
// TODO proper batch validation
|
|
7
7
|
export const validatePushPayload = (
|
|
8
|
-
batch: ReadonlyArray<LiveStoreEvent.
|
|
9
|
-
currentEventSequenceNumber: EventSequenceNumber.
|
|
8
|
+
batch: ReadonlyArray<LiveStoreEvent.Global.Encoded>,
|
|
9
|
+
currentEventSequenceNumber: EventSequenceNumber.Global.Type,
|
|
10
10
|
) =>
|
|
11
11
|
Effect.gen(function* () {
|
|
12
12
|
if (batch[0]!.seqNum <= currentEventSequenceNumber) {
|
|
13
|
-
return yield*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
providedNum: EventSequenceNumber.globalEventSequenceNumber(batch[0]!.seqNum),
|
|
17
|
-
}),
|
|
13
|
+
return yield* new ServerAheadError({
|
|
14
|
+
minimumExpectedNum: EventSequenceNumber.Global.make(currentEventSequenceNumber + 1),
|
|
15
|
+
providedNum: EventSequenceNumber.Global.make(batch[0]!.seqNum),
|
|
18
16
|
})
|
|
19
17
|
}
|
|
20
18
|
})
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
|
|
34
34
|
import { Schema } from '@livestore/utils/effect'
|
|
35
35
|
|
|
36
|
-
import type { EventDef } from '../schema/EventDef.ts'
|
|
37
|
-
import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
|
|
38
|
-
import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
|
|
36
|
+
import type { EventDef } from '../schema/EventDef/mod.ts'
|
|
37
|
+
import * as EventSequenceNumber from '../schema/EventSequenceNumber/mod.ts'
|
|
38
|
+
import * as LiveStoreEvent from '../schema/LiveStoreEvent/mod.ts'
|
|
39
39
|
|
|
40
40
|
export interface ClientIdentity {
|
|
41
41
|
clientId: string
|
|
@@ -80,7 +80,7 @@ export const makeFactory =
|
|
|
80
80
|
client,
|
|
81
81
|
startSeq = 1,
|
|
82
82
|
initialParent = 'root',
|
|
83
|
-
}: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.
|
|
83
|
+
}: EventFactoriesConfig): EventFactories<TDefs, LiveStoreEvent.Global.Encoded> => {
|
|
84
84
|
let nextSeq = startSeq
|
|
85
85
|
let parentRef: SequenceValue = initialParent
|
|
86
86
|
|
|
@@ -95,7 +95,7 @@ export const makeFactory =
|
|
|
95
95
|
|
|
96
96
|
const current = () => ({ seq: nextSeq, parent: parentRef })
|
|
97
97
|
|
|
98
|
-
const factories: Partial<EventFactories<TDefs, LiveStoreEvent.
|
|
98
|
+
const factories: Partial<EventFactories<TDefs, LiveStoreEvent.Global.Encoded>> = {}
|
|
99
99
|
|
|
100
100
|
for (const [name, eventDef] of Object.entries(eventDefs) as [keyof TDefs, TDefs[keyof TDefs]][]) {
|
|
101
101
|
const next = (args: EventFactoriesArgs<TDefs>[typeof name]) => {
|
|
@@ -103,14 +103,12 @@ export const makeFactory =
|
|
|
103
103
|
const encodedArgs = Schema.encodeSync(eventDef.schema)(decoded.args)
|
|
104
104
|
const encoded = eventDef.encoded(encodedArgs)
|
|
105
105
|
|
|
106
|
-
const event = LiveStoreEvent.
|
|
106
|
+
const event = LiveStoreEvent.Global.Encoded.make({
|
|
107
107
|
name: encoded.name,
|
|
108
108
|
args: encoded.args,
|
|
109
|
-
seqNum: EventSequenceNumber.
|
|
109
|
+
seqNum: EventSequenceNumber.Global.make(nextSeq),
|
|
110
110
|
parentSeqNum:
|
|
111
|
-
parentRef === 'root'
|
|
112
|
-
? EventSequenceNumber.ROOT.global
|
|
113
|
-
: EventSequenceNumber.globalEventSequenceNumber(parentRef),
|
|
111
|
+
parentRef === 'root' ? EventSequenceNumber.Client.ROOT.global : EventSequenceNumber.Global.make(parentRef),
|
|
114
112
|
clientId: client.clientId,
|
|
115
113
|
sessionId: client.sessionId,
|
|
116
114
|
})
|
|
@@ -126,8 +124,8 @@ export const makeFactory =
|
|
|
126
124
|
advanceTo,
|
|
127
125
|
setParent,
|
|
128
126
|
current,
|
|
129
|
-
} as EventFactories<TDefs, LiveStoreEvent.
|
|
127
|
+
} as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>[typeof name]
|
|
130
128
|
}
|
|
131
129
|
|
|
132
|
-
return factories as EventFactories<TDefs, LiveStoreEvent.
|
|
130
|
+
return factories as EventFactories<TDefs, LiveStoreEvent.Global.Encoded>
|
|
133
131
|
}
|
package/src/util.ts
CHANGED
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
/// <reference lib="es2022" />
|
|
2
2
|
|
|
3
|
-
import type
|
|
4
|
-
import { Schema } from '@livestore/utils/effect'
|
|
3
|
+
import { type Brand, Schema } from '@livestore/utils/effect'
|
|
5
4
|
|
|
6
5
|
export type ParamsObject = Record<string, SqlValue>
|
|
7
6
|
export type SqlValue = string | number | Uint8Array<ArrayBuffer> | null
|
|
8
7
|
|
|
9
8
|
export type Bindable = ReadonlyArray<SqlValue> | ParamsObject
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Numeric schema for the SQLite `REAL` domain. Unlike `Schema.Finite` it accepts
|
|
12
|
+
* `Infinity`/`NaN`, because SQLite `REAL` columns can legitimately store them and
|
|
13
|
+
* bind values / DEFAULT codecs must round-trip those through the devtools/debug
|
|
14
|
+
* protocol. This is the single carve-out for the SQLite REAL numeric domain — use it
|
|
15
|
+
* instead of a bare `Schema.Number` so the `schemaNumber` exception lives in one place.
|
|
16
|
+
*/
|
|
17
|
+
// @effect-diagnostics-next-line schemaNumber:off -- see SqliteReal docstring: SQLite REAL permits Infinity/NaN, so Schema.Finite would wrongly reject valid values
|
|
18
|
+
export const SqliteReal = Schema.Number
|
|
19
|
+
|
|
20
|
+
export const SqlValueSchema = Schema.Union([
|
|
12
21
|
Schema.String,
|
|
13
|
-
|
|
14
|
-
Schema.Uint8Array as any as Schema.
|
|
22
|
+
SqliteReal,
|
|
23
|
+
Schema.Uint8Array as any as Schema.Codec<Uint8Array<ArrayBuffer>>,
|
|
15
24
|
Schema.Null,
|
|
16
|
-
)
|
|
25
|
+
])
|
|
17
26
|
|
|
18
|
-
export const PreparedBindValues = Schema.Union(
|
|
27
|
+
export const PreparedBindValues = Schema.Union([
|
|
19
28
|
Schema.Array(SqlValueSchema),
|
|
20
|
-
Schema.Record(
|
|
21
|
-
).pipe(Schema.brand('PreparedBindValues'))
|
|
29
|
+
Schema.Record(Schema.String, SqlValueSchema),
|
|
30
|
+
]).pipe(Schema.brand('PreparedBindValues'))
|
|
22
31
|
|
|
23
32
|
export type PreparedBindValues = Brand.Branded<Bindable, 'PreparedBindValues'>
|
|
24
33
|
|
|
@@ -47,11 +56,11 @@ export const sql = (template: TemplateStringsArray, ...args: unknown[]): string
|
|
|
47
56
|
* TODO: Also make sure that the SQLite binding limit of 1000 is respected
|
|
48
57
|
*/
|
|
49
58
|
export const prepareBindValues = (values: Bindable, statement: string): PreparedBindValues => {
|
|
50
|
-
if (Array.isArray(values)) return values as any as PreparedBindValues
|
|
59
|
+
if (Array.isArray(values) === true) return values as any as PreparedBindValues
|
|
51
60
|
|
|
52
61
|
const result: ParamsObject = {}
|
|
53
62
|
for (const [key, value] of Object.entries(values)) {
|
|
54
|
-
if (statement.includes(key)) {
|
|
63
|
+
if (statement.includes(key) === true) {
|
|
55
64
|
result[`$${key}`] = value
|
|
56
65
|
}
|
|
57
66
|
}
|
package/src/version.ts
CHANGED
|
@@ -1,14 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
// import packageJson from '../package.json' with { type: 'json' }
|
|
3
|
-
// export const liveStoreVersion = packageJson.version
|
|
1
|
+
import pkg from '../package.json' with { type: 'json' }
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Current LiveStore package version used for display, release assets, and install guidance.
|
|
5
|
+
*
|
|
6
|
+
* Can be overridden at runtime via `globalThis.__LIVESTORE_VERSION_OVERRIDE__` for testing display-only version values.
|
|
7
|
+
*/
|
|
8
|
+
export const liveStoreVersion: string = (globalThis as any).__LIVESTORE_VERSION_OVERRIDE__ ?? pkg.version
|
|
9
|
+
|
|
10
|
+
export const devtoolsProtocolVersion: number = (globalThis as any).__LIVESTORE_DEVTOOLS_PROTOCOL_VERSION_OVERRIDE__ ?? 1
|
|
11
|
+
|
|
12
|
+
export const supportedDevtoolsProtocolVersions: ReadonlyArray<number> = [devtoolsProtocolVersion]
|
|
13
|
+
|
|
14
|
+
export const resolveDevtoolsProtocolVersion = (version: number | undefined): number => version ?? 1
|
|
15
|
+
|
|
16
|
+
export const isDevtoolsProtocolVersionSupported = (
|
|
17
|
+
version: number | undefined,
|
|
18
|
+
supportedVersions: ReadonlyArray<number> = supportedDevtoolsProtocolVersions,
|
|
19
|
+
): boolean => supportedVersions.includes(resolveDevtoolsProtocolVersion(version))
|
|
6
20
|
|
|
7
21
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
22
|
+
* CRITICAL: Increment this version whenever you modify client-side EVENTLOG table schemas.
|
|
23
|
+
*
|
|
24
|
+
* Used to generate database file names (e.g., `eventlog@6.db`, `state@6.db`) across all client adapters.
|
|
25
|
+
*
|
|
26
|
+
* Bump required when:
|
|
27
|
+
* - Modifying eventlog system tables (eventlogMetaTable, syncStatusTable) in schema/state/sqlite/system-tables/eventlog-tables.ts
|
|
28
|
+
* - Changing columns, types, constraints, or indexes in eventlog tables
|
|
29
|
+
*
|
|
30
|
+
* Bump NOT required when:
|
|
31
|
+
* - Modifying STATE table schemas (auto-migrated via hash-based detection and rebuilt from eventlog)
|
|
32
|
+
* - Changing query patterns or client-side implementation details
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ CRITICAL: Eventlog changes without bumping this version cause permanent data loss!
|
|
10
35
|
*
|
|
11
|
-
*
|
|
12
|
-
* In the future, LiveStore will provide a migration path for older database files to avoid the impression of data loss.
|
|
36
|
+
* Impact: Version changes trigger a "soft reset" - old data becomes inaccessible but remains on disk.
|
|
13
37
|
*/
|
|
14
38
|
export const liveStoreStorageFormatVersion = 6
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import type { SingleOrReadonlyArray } from '@livestore/utils';
|
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
|
3
|
-
import type { BindValues } from '../sql-queries/sql-queries.ts';
|
|
4
|
-
import type { ParamsObject } from '../util.ts';
|
|
5
|
-
import type * as LiveStoreEvent from './LiveStoreEvent.ts';
|
|
6
|
-
import type { QueryBuilder } from './state/sqlite/query-builder/mod.ts';
|
|
7
|
-
export type EventDefMap = {
|
|
8
|
-
map: Map<string, EventDef.Any>;
|
|
9
|
-
};
|
|
10
|
-
export type EventDefRecord = {
|
|
11
|
-
[name: string]: EventDef.Any;
|
|
12
|
-
};
|
|
13
|
-
export type EventDef<TName extends string, TType, TEncoded = TType, TDerived extends boolean = false> = {
|
|
14
|
-
name: TName;
|
|
15
|
-
schema: Schema.Schema<TType, TEncoded>;
|
|
16
|
-
options: {
|
|
17
|
-
/**
|
|
18
|
-
* When set to true, the mutation won't be synced across clients but
|
|
19
|
-
*/
|
|
20
|
-
clientOnly: boolean;
|
|
21
|
-
/** Warning: This feature is not fully implemented yet */
|
|
22
|
-
facts: FactsCallback<TType> | undefined;
|
|
23
|
-
derived: TDerived;
|
|
24
|
-
};
|
|
25
|
-
/** Helper function to construct a partial event */
|
|
26
|
-
(args: TType): {
|
|
27
|
-
name: TName;
|
|
28
|
-
args: TType;
|
|
29
|
-
};
|
|
30
|
-
/** Helper function to construct a partial encoded event */
|
|
31
|
-
encoded: (args: TEncoded) => {
|
|
32
|
-
name: TName;
|
|
33
|
-
args: TEncoded;
|
|
34
|
-
};
|
|
35
|
-
readonly Event: {
|
|
36
|
-
name: TName;
|
|
37
|
-
args: TType;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
export type FactsCallback<TTo> = (args: TTo, currentFacts: EventDefFacts) => {
|
|
41
|
-
modify: {
|
|
42
|
-
set: Iterable<EventDefFactInput>;
|
|
43
|
-
unset: Iterable<EventDefFactInput>;
|
|
44
|
-
};
|
|
45
|
-
require: Iterable<EventDefFactInput>;
|
|
46
|
-
};
|
|
47
|
-
export declare namespace EventDef {
|
|
48
|
-
type Any = EventDef<string, any, any, boolean>;
|
|
49
|
-
type AnyWithoutFn = Pick<Any, 'name' | 'schema' | 'options'>;
|
|
50
|
-
}
|
|
51
|
-
export type EventDefKey = string;
|
|
52
|
-
export type EventDefFact = string;
|
|
53
|
-
export type EventDefFacts = ReadonlyMap<string, any>;
|
|
54
|
-
export type EventDefFactsGroup = {
|
|
55
|
-
modifySet: EventDefFacts;
|
|
56
|
-
modifyUnset: EventDefFacts;
|
|
57
|
-
/**
|
|
58
|
-
* Events on independent "dependency" branches are commutative which can facilitate more prioritized syncing
|
|
59
|
-
*/
|
|
60
|
-
depRequire: EventDefFacts;
|
|
61
|
-
depRead: EventDefFacts;
|
|
62
|
-
};
|
|
63
|
-
export type EventDefFactsSnapshot = Map<string, any>;
|
|
64
|
-
export type EventDefFactInput = string | readonly [string, any];
|
|
65
|
-
export declare const defineFacts: <TRecord extends Record<string, EventDefFactInput | ((...args: any[]) => EventDefFactInput)>>(record: TRecord) => TRecord;
|
|
66
|
-
export type DefineEventOptions<TTo, TDerived extends boolean = false> = {
|
|
67
|
-
/** Warning: This feature is not fully implemented yet */
|
|
68
|
-
facts?: (args: TTo, currentFacts: EventDefFacts) => {
|
|
69
|
-
modify?: {
|
|
70
|
-
set?: Iterable<EventDefFactInput>;
|
|
71
|
-
unset?: Iterable<EventDefFactInput>;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Two purposes: constrain history and constrain compaction
|
|
75
|
-
*/
|
|
76
|
-
require?: Iterable<EventDefFactInput>;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* When set to true, the event won't be synced over the network
|
|
80
|
-
*/
|
|
81
|
-
clientOnly?: boolean;
|
|
82
|
-
derived?: TDerived;
|
|
83
|
-
};
|
|
84
|
-
export declare const defineEvent: <TName extends string, TType, TEncoded = TType, TDerived extends boolean = false>(args: {
|
|
85
|
-
name: TName;
|
|
86
|
-
schema: Schema.Schema<TType, TEncoded>;
|
|
87
|
-
} & DefineEventOptions<TType, TDerived>) => EventDef<TName, TType, TEncoded, TDerived>;
|
|
88
|
-
export declare const synced: <TName extends string, TType, TEncoded = TType>(args: {
|
|
89
|
-
name: TName;
|
|
90
|
-
schema: Schema.Schema<TType, TEncoded>;
|
|
91
|
-
} & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
|
|
92
|
-
export declare const clientOnly: <TName extends string, TType, TEncoded = TType>(args: {
|
|
93
|
-
name: TName;
|
|
94
|
-
schema: Schema.Schema<TType, TEncoded>;
|
|
95
|
-
} & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">) => EventDef<TName, TType, TEncoded>;
|
|
96
|
-
export type MaterializerResult = {
|
|
97
|
-
sql: string;
|
|
98
|
-
bindValues: BindValues;
|
|
99
|
-
writeTables?: ReadonlySet<string>;
|
|
100
|
-
} | QueryBuilder.Any | string;
|
|
101
|
-
export type MaterializerContextQuery = {
|
|
102
|
-
(args: {
|
|
103
|
-
query: string;
|
|
104
|
-
bindValues: ParamsObject;
|
|
105
|
-
}): ReadonlyArray<unknown>;
|
|
106
|
-
<TResult>(qb: QueryBuilder<TResult, any, any>): TResult;
|
|
107
|
-
};
|
|
108
|
-
export type Materializer<TEventDef extends EventDef.AnyWithoutFn = EventDef.AnyWithoutFn> = (event: TEventDef['schema']['Type'], context: {
|
|
109
|
-
currentFacts: EventDefFacts;
|
|
110
|
-
eventDef: TEventDef;
|
|
111
|
-
/** Can be used to query the current state */
|
|
112
|
-
query: MaterializerContextQuery;
|
|
113
|
-
/** The full LiveStore event with clientId, sessionId, etc. */
|
|
114
|
-
event: LiveStoreEvent.AnyDecoded;
|
|
115
|
-
}) => SingleOrReadonlyArray<MaterializerResult>;
|
|
116
|
-
export declare const defineMaterializer: <TEventDef extends EventDef.AnyWithoutFn>(_eventDef: TEventDef, materializer: Materializer<TEventDef>) => Materializer<TEventDef>;
|
|
117
|
-
export declare const materializers: <TInputRecord extends Record<string, EventDef.AnyWithoutFn>>(_eventDefRecord: TInputRecord, handlers: { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
|
|
118
|
-
name: TEventName;
|
|
119
|
-
}>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
|
|
120
|
-
name: TEventName;
|
|
121
|
-
}>>; }) => { [TEventName in TInputRecord[keyof TInputRecord]["name"] as Extract<TInputRecord[keyof TInputRecord], {
|
|
122
|
-
name: TEventName;
|
|
123
|
-
}>["options"]["derived"] extends true ? never : TEventName]: Materializer<Extract<TInputRecord[keyof TInputRecord], {
|
|
124
|
-
name: TEventName;
|
|
125
|
-
}>>; };
|
|
126
|
-
//# sourceMappingURL=EventDef.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventDef.d.ts","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;CAC/B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,SAAS,OAAO,GAAG,KAAK,IAAI;IACtG,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACtC,OAAO,EAAE;QACP;;WAEG;QACH,UAAU,EAAE,OAAO,CAAA;QACnB,yDAAyD;QACzD,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;QACvC,OAAO,EAAE,QAAQ,CAAA;KAClB,CAAA;IAED,mDAAmD;IACnD,CACE,IAAI,EAAE,KAAK,GACV;QACD,IAAI,EAAE,KAAK,CAAA;QACX,IAAI,EAAE,KAAK,CAAA;KACZ,CAAA;IAED,2DAA2D;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAC3B,IAAI,EAAE,KAAK,CAAA;QACX,IAAI,EAAE,QAAQ,CAAA;KACf,CAAA;IAED,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,KAAK,CAAA;QACX,IAAI,EAAE,KAAK,CAAA;KACZ,CAAA;CACF,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI,CAC/B,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,aAAa,KACxB;IACH,MAAM,EAAE;QACN,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAChC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;KACnC,CAAA;IACD,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;CACrC,CAAA;AAED,yBAAiB,QAAQ,CAAC;IACxB,KAAY,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAErD,KAAY,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;CACpE;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AACjC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,aAAa,CAAA;IACxB,WAAW,EAAE,aAAa,CAAA;IAE1B;;OAEG;IACH,UAAU,EAAE,aAAa,CAAA;IACzB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE/D,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,iBAAiB,CAAC,CAAC,EAE3F,QAAQ,OAAO,KACd,OAAiB,CAAA;AAEpB,MAAM,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,SAAS,OAAO,GAAG,KAAK,IAAI;IAGtE,yDAAyD;IACzD,KAAK,CAAC,EAAE,CACN,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,aAAa,KACxB;QACH,MAAM,CAAC,EAAE;YACP,GAAG,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;YACjC,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;SACpC,CAAA;QACD;;WAEG;QACH,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;KACtC,CAAA;IACD;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,SAAS,OAAO,GAAG,KAAK,EACzG,MAAM;IACJ,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CACvC,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,KACtC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAqC3C,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAClE,MAAM;IACJ,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CACvC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,KACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAgD,CAAA;AAElF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EACtE,MAAM;IACJ,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CACvC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,KACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAA+C,CAAA;AAEjF,MAAM,MAAM,kBAAkB,GAC1B;IACE,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAClC,GACD,YAAY,CAAC,GAAG,GAChB,MAAM,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,CAAA;KAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3E,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,CAC1F,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE;IACP,YAAY,EAAE,aAAa,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;IACnB,6CAA6C;IAC7C,KAAK,EAAE,wBAAwB,CAAA;IAC/B,8DAA8D;IAC9D,KAAK,EAAE,cAAc,CAAC,UAAU,CAAA;CACjC,KACE,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;AAE9C,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,QAAQ,CAAC,YAAY,EACxE,WAAW,SAAS,EACpB,cAAc,YAAY,CAAC,SAAS,CAAC,KACpC,YAAY,CAAC,SAAS,CAExB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EACtF,iBAAiB,YAAY,EAC7B,UAAU,GACP,UAAU,IAAI,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAChE,YAAY,CAAC,MAAM,YAAY,CAAC,EAChC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CACrB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAChC,KAAK,GACL,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC,GAI/F,QATE,UAAU;UAED,UAAU;;UAG4D,UAAU;MAO7F,CAAA"}
|
package/dist/schema/EventDef.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
|
3
|
-
export const defineFacts = (record) => record;
|
|
4
|
-
export const defineEvent = (args) => {
|
|
5
|
-
const { name, schema, ...options } = args;
|
|
6
|
-
const makePartialEvent = (args) => {
|
|
7
|
-
const res = Schema.validateEither(schema)(args);
|
|
8
|
-
if (res._tag === 'Left') {
|
|
9
|
-
shouldNeverHappen(`Invalid event args for event '${name}':`, res.left.message, '\n');
|
|
10
|
-
}
|
|
11
|
-
return { name: name, args };
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(makePartialEvent, 'name', { value: name });
|
|
14
|
-
Object.defineProperty(makePartialEvent, 'schema', { value: schema });
|
|
15
|
-
Object.defineProperty(makePartialEvent, 'encoded', {
|
|
16
|
-
value: (args) => ({ name: name, args }),
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(makePartialEvent, 'options', {
|
|
19
|
-
value: {
|
|
20
|
-
clientOnly: options?.clientOnly ?? false,
|
|
21
|
-
facts: options?.facts
|
|
22
|
-
? (args, currentFacts) => {
|
|
23
|
-
const res = options.facts(args, currentFacts);
|
|
24
|
-
return {
|
|
25
|
-
modify: {
|
|
26
|
-
set: res.modify?.set ? new Set(res.modify.set) : new Set(),
|
|
27
|
-
unset: res.modify?.unset ? new Set(res.modify.unset) : new Set(),
|
|
28
|
-
},
|
|
29
|
-
require: res.require ? new Set(res.require) : new Set(),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
: undefined,
|
|
33
|
-
derived: options?.derived ?? false,
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
return makePartialEvent;
|
|
37
|
-
};
|
|
38
|
-
export const synced = (args) => defineEvent({ ...args, clientOnly: false });
|
|
39
|
-
export const clientOnly = (args) => defineEvent({ ...args, clientOnly: true });
|
|
40
|
-
export const defineMaterializer = (_eventDef, materializer) => {
|
|
41
|
-
return materializer;
|
|
42
|
-
};
|
|
43
|
-
export const materializers = (_eventDefRecord, handlers) => {
|
|
44
|
-
return handlers;
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=EventDef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventDef.js","sourceRoot":"","sources":["../../src/schema/EventDef.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Brand, Schema } from '@livestore/utils/effect';
|
|
2
|
-
export type ClientEventSequenceNumber = Brand.Branded<number, 'ClientEventSequenceNumber'>;
|
|
3
|
-
export declare const localEventSequenceNumber: Brand.Brand.Constructor<ClientEventSequenceNumber>;
|
|
4
|
-
export declare const ClientEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
|
|
5
|
-
export type GlobalEventSequenceNumber = Brand.Branded<number, 'GlobalEventSequenceNumber'>;
|
|
6
|
-
export declare const globalEventSequenceNumber: Brand.Brand.Constructor<GlobalEventSequenceNumber>;
|
|
7
|
-
export declare const GlobalEventSequenceNumber: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
8
|
-
export declare const clientDefault: ClientEventSequenceNumber;
|
|
9
|
-
export declare const rebaseGenerationDefault = 0;
|
|
10
|
-
/**
|
|
11
|
-
* LiveStore event sequence number value consisting of a globally unique event sequence number
|
|
12
|
-
* and a client sequence number.
|
|
13
|
-
*
|
|
14
|
-
* The client sequence number is only used for clientOnly events and starts from 0 for each global sequence number.
|
|
15
|
-
*/
|
|
16
|
-
export type EventSequenceNumber = {
|
|
17
|
-
global: GlobalEventSequenceNumber;
|
|
18
|
-
client: ClientEventSequenceNumber;
|
|
19
|
-
/**
|
|
20
|
-
* Generation integer that is incremented whenever the client rebased.
|
|
21
|
-
* Starts from and resets to 0 for each global sequence number.
|
|
22
|
-
*/
|
|
23
|
-
rebaseGeneration: number;
|
|
24
|
-
};
|
|
25
|
-
export type EventSequenceNumberInput = EventSequenceNumber | (Omit<typeof EventSequenceNumber.Encoded, 'rebaseGeneration'> & {
|
|
26
|
-
rebaseGeneration?: number;
|
|
27
|
-
});
|
|
28
|
-
/**
|
|
29
|
-
* NOTE: Client mutation events with a non-0 client id, won't be synced to the sync backend.
|
|
30
|
-
*/
|
|
31
|
-
export declare const EventSequenceNumber: Schema.Struct<{
|
|
32
|
-
global: Schema.BrandSchema<number & Brand.Brand<"GlobalEventSequenceNumber">, number, never>;
|
|
33
|
-
/** Only increments for clientOnly events */
|
|
34
|
-
client: Schema.BrandSchema<number & Brand.Brand<"ClientEventSequenceNumber">, number, never>;
|
|
35
|
-
rebaseGeneration: typeof Schema.Int;
|
|
36
|
-
}>;
|
|
37
|
-
/**
|
|
38
|
-
* Compare two event sequence numbers i.e. checks if the first event sequence number is less than the second.
|
|
39
|
-
* Comparison hierarchy: global > client > rebaseGeneration
|
|
40
|
-
*/
|
|
41
|
-
export declare const compare: (a: EventSequenceNumber, b: EventSequenceNumber) => number;
|
|
42
|
-
/**
|
|
43
|
-
* Convert an event sequence number to a string representation.
|
|
44
|
-
*/
|
|
45
|
-
export declare const toString: (seqNum: EventSequenceNumber) => string;
|
|
46
|
-
/**
|
|
47
|
-
* Convert a string representation of an event sequence number to an event sequence number.
|
|
48
|
-
* Parses strings in the format: e{global}[+{client}][r{rebaseGeneration}]
|
|
49
|
-
* Examples: "e0", "e0r1", "e0+1", "e0+1r1"
|
|
50
|
-
*/
|
|
51
|
-
export declare const fromString: (str: string) => EventSequenceNumber;
|
|
52
|
-
export declare const fromGlobal: (seqNum: GlobalEventSequenceNumber) => {
|
|
53
|
-
global: GlobalEventSequenceNumber;
|
|
54
|
-
client: ClientEventSequenceNumber;
|
|
55
|
-
rebaseGeneration: number;
|
|
56
|
-
};
|
|
57
|
-
export declare const isEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
|
|
58
|
-
export type EventSequenceNumberPair = {
|
|
59
|
-
seqNum: EventSequenceNumber;
|
|
60
|
-
parentSeqNum: EventSequenceNumber;
|
|
61
|
-
};
|
|
62
|
-
export declare const ROOT: {
|
|
63
|
-
global: GlobalEventSequenceNumber;
|
|
64
|
-
client: ClientEventSequenceNumber;
|
|
65
|
-
rebaseGeneration: number;
|
|
66
|
-
};
|
|
67
|
-
export declare const isGreaterThan: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
|
|
68
|
-
export declare const isGreaterThanOrEqual: (a: EventSequenceNumber, b: EventSequenceNumber) => boolean;
|
|
69
|
-
export declare const max: (a: EventSequenceNumber, b: EventSequenceNumber) => EventSequenceNumber;
|
|
70
|
-
export declare const diff: (a: EventSequenceNumber, b: EventSequenceNumber) => {
|
|
71
|
-
global: number;
|
|
72
|
-
client: number;
|
|
73
|
-
};
|
|
74
|
-
export declare const make: (seqNum: EventSequenceNumberInput) => EventSequenceNumber;
|
|
75
|
-
export declare const nextPair: ({ seqNum, isClient, rebaseGeneration, }: {
|
|
76
|
-
seqNum: EventSequenceNumber;
|
|
77
|
-
isClient: boolean;
|
|
78
|
-
rebaseGeneration?: number;
|
|
79
|
-
}) => EventSequenceNumberPair;
|
|
80
|
-
//# sourceMappingURL=EventSequenceNumber.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventSequenceNumber.d.ts","sourceRoot":"","sources":["../../src/schema/EventSequenceNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvD,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,wBAAwB,oDAA6C,CAAA;AAClF,eAAO,MAAM,yBAAyB,sFAAyD,CAAA;AAE/F,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAC1F,eAAO,MAAM,yBAAyB,oDAA6C,CAAA;AACnF,eAAO,MAAM,yBAAyB,sFAA0D,CAAA;AAEhG,eAAO,MAAM,aAAa,EAAe,yBAAyB,CAAA;AAElE,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,yBAAyB,CAAA;IACjC,MAAM,EAAE,yBAAyB,CAAA;IACjC;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAGlG;;GAEG;AACH,eAAO,MAAM,mBAAmB;;IAE9B,4CAA4C;;;EAU5C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,WAQrE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,mBAAmB,WAKnD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,mBAyCxC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,yBAAyB;;;;CAI1D,CAAA;AAEF,eAAO,MAAM,OAAO,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YACuB,CAAA;AAE7F,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAExG,eAAO,MAAM,IAAI;YACK,yBAAyB;;;CAGhB,CAAA;AAE/B,eAAO,MAAM,aAAa,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAE3E,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,YAElF,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,wBAEjE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,mBAAmB,EAAE,GAAG,mBAAmB;;;CAKlE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,wBAAwB,KAAG,mBAOvD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,yCAItB;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,uBAqBH,CAAA"}
|