@livestore/common 0.4.0-dev.9 → 0.5.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/ClientSessionLeaderThreadProxy.d.ts +27 -12
- package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
- package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
- package/dist/MaterializationJournal.d.ts +44 -0
- package/dist/MaterializationJournal.d.ts.map +1 -0
- package/dist/MaterializationJournal.js +112 -0
- package/dist/MaterializationJournal.js.map +1 -0
- package/dist/StateHead.d.ts +26 -0
- package/dist/StateHead.d.ts.map +1 -0
- package/dist/StateHead.js +50 -0
- package/dist/StateHead.js.map +1 -0
- package/dist/WorkerTransportError.d.ts +11 -0
- package/dist/WorkerTransportError.d.ts.map +1 -0
- package/dist/WorkerTransportError.js +11 -0
- package/dist/WorkerTransportError.js.map +1 -0
- package/dist/__tests__/fixture.d.ts +1 -1
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/__tests__/fixture.js +3 -3
- package/dist/__tests__/fixture.js.map +1 -1
- package/dist/adapter-types.d.ts +59 -57
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +31 -22
- package/dist/adapter-types.js.map +1 -1
- package/dist/bounded-collections.d.ts.map +1 -1
- package/dist/bounded-collections.js +6 -4
- package/dist/bounded-collections.js.map +1 -1
- package/dist/debug-info.d.ts +56 -56
- package/dist/debug-info.d.ts.map +1 -1
- package/dist/debug-info.js +46 -32
- package/dist/debug-info.js.map +1 -1
- package/dist/defs.d.ts +9 -9
- package/dist/defs.js +2 -2
- package/dist/devtools/devtools-compatibility.test.d.ts +2 -0
- package/dist/devtools/devtools-compatibility.test.d.ts.map +1 -0
- package/dist/devtools/devtools-compatibility.test.js +16 -0
- package/dist/devtools/devtools-compatibility.test.js.map +1 -0
- package/dist/devtools/devtools-messages-client-session.d.ts +531 -312
- package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-client-session.js +86 -67
- package/dist/devtools/devtools-messages-client-session.js.map +1 -1
- package/dist/devtools/devtools-messages-common.d.ts +32 -35
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +12 -14
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +417 -320
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.js +117 -87
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/devtools/devtools-sessioninfo.d.ts +28 -17
- package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
- package/dist/devtools/devtools-sessioninfo.js +12 -6
- package/dist/devtools/devtools-sessioninfo.js.map +1 -1
- package/dist/devtools/mod.d.ts +17 -7
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +19 -8
- package/dist/devtools/mod.js.map +1 -1
- package/dist/errors.d.ts +52 -46
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +31 -21
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +116 -21
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +596 -470
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/RejectedPushError.d.ts +138 -0
- package/dist/leader-thread/RejectedPushError.d.ts.map +1 -0
- package/dist/leader-thread/RejectedPushError.js +97 -0
- package/dist/leader-thread/RejectedPushError.js.map +1 -0
- package/dist/leader-thread/connection.d.ts +1 -0
- package/dist/leader-thread/connection.d.ts.map +1 -1
- package/dist/leader-thread/connection.js +10 -9
- package/dist/leader-thread/connection.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +20 -15
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +80 -20
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -2
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +110 -62
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +19 -7
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +67 -45
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
- package/dist/leader-thread/materialize-event.d.ts +3 -2
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +32 -9
- package/dist/leader-thread/materialize-event.js.map +1 -1
- package/dist/leader-thread/mod.d.ts +1 -0
- package/dist/leader-thread/mod.d.ts.map +1 -1
- package/dist/leader-thread/mod.js +1 -0
- package/dist/leader-thread/mod.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts +2 -2
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +19 -40
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +3 -7
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -3
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/stream-events.d.ts +53 -0
- package/dist/leader-thread/stream-events.d.ts.map +1 -0
- package/dist/leader-thread/stream-events.js +164 -0
- package/dist/leader-thread/stream-events.js.map +1 -0
- package/dist/leader-thread/types.d.ts +92 -51
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js +17 -4
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/logging.d.ts +15 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +2 -0
- package/dist/logging.js.map +1 -0
- package/dist/make-client-session.d.ts +6 -5
- package/dist/make-client-session.d.ts.map +1 -1
- package/dist/make-client-session.js +10 -7
- package/dist/make-client-session.js.map +1 -1
- package/dist/materializer-helper.d.ts +6 -7
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +22 -40
- package/dist/materializer-helper.js.map +1 -1
- package/dist/otel.d.ts +4 -4
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +8 -8
- package/dist/otel.js.map +1 -1
- package/dist/rematerialize-from-eventlog.d.ts +3 -3
- package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
- package/dist/rematerialize-from-eventlog.js +52 -39
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef/define.d.ts +161 -0
- package/dist/schema/EventDef/define.d.ts.map +1 -0
- package/dist/schema/EventDef/define.js +140 -0
- package/dist/schema/EventDef/define.js.map +1 -0
- package/dist/schema/EventDef/define.test.d.ts +2 -0
- package/dist/schema/EventDef/define.test.d.ts.map +1 -0
- package/dist/schema/EventDef/define.test.js +23 -0
- package/dist/schema/EventDef/define.test.js.map +1 -0
- package/dist/schema/EventDef/deprecated.d.ts +94 -0
- package/dist/schema/EventDef/deprecated.d.ts.map +1 -0
- package/dist/schema/EventDef/deprecated.js +143 -0
- package/dist/schema/EventDef/deprecated.js.map +1 -0
- package/dist/schema/EventDef/deprecated.test.d.ts +2 -0
- package/dist/schema/EventDef/deprecated.test.d.ts.map +1 -0
- package/dist/schema/EventDef/deprecated.test.js +95 -0
- package/dist/schema/EventDef/deprecated.test.js.map +1 -0
- package/dist/schema/EventDef/event-def.d.ts +110 -0
- package/dist/schema/EventDef/event-def.d.ts.map +1 -0
- package/dist/schema/EventDef/event-def.js +2 -0
- package/dist/schema/EventDef/event-def.js.map +1 -0
- package/dist/schema/EventDef/facts.d.ts +118 -0
- package/dist/schema/EventDef/facts.d.ts.map +1 -0
- package/dist/schema/EventDef/facts.js +53 -0
- package/dist/schema/EventDef/facts.js.map +1 -0
- package/dist/schema/EventDef/materializer.d.ts +155 -0
- package/dist/schema/EventDef/materializer.d.ts.map +1 -0
- package/dist/schema/EventDef/materializer.js +83 -0
- package/dist/schema/EventDef/materializer.js.map +1 -0
- package/dist/schema/EventDef/mod.d.ts +6 -0
- package/dist/schema/EventDef/mod.d.ts.map +1 -0
- package/dist/schema/EventDef/mod.js +6 -0
- package/dist/schema/EventDef/mod.js.map +1 -0
- package/dist/schema/EventSequenceNumber/client.d.ts +136 -0
- package/dist/schema/EventSequenceNumber/client.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/client.js +192 -0
- package/dist/schema/EventSequenceNumber/client.js.map +1 -0
- package/dist/schema/EventSequenceNumber/global.d.ts +15 -0
- package/dist/schema/EventSequenceNumber/global.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/global.js +14 -0
- package/dist/schema/EventSequenceNumber/global.js.map +1 -0
- package/dist/schema/EventSequenceNumber/mod.d.ts +37 -0
- package/dist/schema/EventSequenceNumber/mod.d.ts.map +1 -0
- package/dist/schema/EventSequenceNumber/mod.js +37 -0
- package/dist/schema/EventSequenceNumber/mod.js.map +1 -0
- package/dist/schema/EventSequenceNumber.test.js +44 -44
- package/dist/schema/EventSequenceNumber.test.js.map +1 -1
- package/dist/schema/LiveStoreEvent/client.d.ts +168 -0
- package/dist/schema/LiveStoreEvent/client.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/client.js +179 -0
- package/dist/schema/LiveStoreEvent/client.js.map +1 -0
- package/dist/schema/LiveStoreEvent/client.test.d.ts +2 -0
- package/dist/schema/LiveStoreEvent/client.test.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/client.test.js +120 -0
- package/dist/schema/LiveStoreEvent/client.test.js.map +1 -0
- package/dist/schema/LiveStoreEvent/for-event-def.d.ts +52 -0
- package/dist/schema/LiveStoreEvent/for-event-def.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/for-event-def.js +2 -0
- package/dist/schema/LiveStoreEvent/for-event-def.js.map +1 -0
- package/dist/schema/LiveStoreEvent/global.d.ts +36 -0
- package/dist/schema/LiveStoreEvent/global.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/global.js +31 -0
- package/dist/schema/LiveStoreEvent/global.js.map +1 -0
- package/dist/schema/LiveStoreEvent/input.d.ts +46 -0
- package/dist/schema/LiveStoreEvent/input.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/input.js +26 -0
- package/dist/schema/LiveStoreEvent/input.js.map +1 -0
- package/dist/schema/LiveStoreEvent/mod.d.ts +5 -0
- package/dist/schema/LiveStoreEvent/mod.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent/mod.js +5 -0
- package/dist/schema/LiveStoreEvent/mod.js.map +1 -0
- package/dist/schema/events.d.ts +1 -1
- package/dist/schema/events.d.ts.map +1 -1
- package/dist/schema/events.js +1 -1
- package/dist/schema/events.js.map +1 -1
- package/dist/schema/mod.d.ts +7 -4
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +6 -4
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema.d.ts +16 -1
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +34 -5
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +14 -18
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +54 -30
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +146 -6
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts +13 -13
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.js +13 -15
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.test.js +19 -43
- package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-def.js +132 -57
- package/dist/schema/state/sqlite/column-def.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.test.js +155 -70
- package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-spec.js +30 -12
- package/dist/schema/state/sqlite/column-spec.js.map +1 -1
- package/dist/schema/state/sqlite/column-spec.test.js +26 -17
- package/dist/schema/state/sqlite/column-spec.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -2
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +15 -6
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +25 -19
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +22 -16
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +28 -17
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +14 -12
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +6 -4
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +3 -5
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +6 -8
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/persistence.d.ts +11 -0
- package/dist/schema/state/sqlite/persistence.d.ts.map +1 -0
- package/dist/schema/state/sqlite/persistence.js +10 -0
- package/dist/schema/state/sqlite/persistence.js.map +1 -0
- package/dist/schema/state/sqlite/query-builder/api.d.ts +58 -29
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.js +105 -24
- package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts +4 -2
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +42 -27
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +402 -498
- package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.d.ts +2 -2
- package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.js +24 -14
- package/dist/schema/state/sqlite/schema-helpers.js.map +1 -1
- package/dist/schema/state/sqlite/schema-helpers.test.d.ts +2 -0
- package/dist/schema/state/sqlite/schema-helpers.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/schema-helpers.test.js +36 -0
- package/dist/schema/state/sqlite/schema-helpers.test.js.map +1 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts +515 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.js +54 -0
- package/dist/schema/state/sqlite/system-tables/eventlog-tables.js.map +1 -0
- package/dist/schema/state/sqlite/system-tables/mod.d.ts +3 -0
- package/dist/schema/state/sqlite/system-tables/mod.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/mod.js +3 -0
- package/dist/schema/state/sqlite/system-tables/mod.js.map +1 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.d.ts +678 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.d.ts.map +1 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.js +87 -0
- package/dist/schema/state/sqlite/system-tables/state-tables.js.map +1 -0
- package/dist/schema/state/sqlite/table-def.d.ts +19 -20
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +54 -4
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.js +226 -20
- package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
- package/dist/schema/unknown-events.d.ts +47 -0
- package/dist/schema/unknown-events.d.ts.map +1 -0
- package/dist/schema/unknown-events.js +70 -0
- package/dist/schema/unknown-events.js.map +1 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts +2 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.d.ts.map +1 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js +73 -0
- package/dist/schema-management/__tests__/migrations-autoincrement-quoting.test.js.map +1 -0
- package/dist/schema-management/common.js +2 -2
- package/dist/schema-management/common.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +32 -2
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +38 -6
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/validate-schema.d.ts +3 -3
- package/dist/schema-management/validate-schema.d.ts.map +1 -1
- package/dist/schema-management/validate-schema.js +2 -2
- package/dist/schema-management/validate-schema.js.map +1 -1
- package/dist/session-id-symbol.d.ts +29 -0
- package/dist/session-id-symbol.d.ts.map +1 -0
- package/dist/session-id-symbol.js +44 -0
- package/dist/session-id-symbol.js.map +1 -0
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js +26 -16
- package/dist/sql-queries/sql-queries.js.map +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sql-queries/sql-query-builder.js.map +1 -1
- package/dist/sql-queries/types.d.ts +6 -7
- package/dist/sql-queries/types.d.ts.map +1 -1
- package/dist/sql-queries/types.js.map +1 -1
- package/dist/sqlite-db-helper.d.ts +21 -1
- package/dist/sqlite-db-helper.d.ts.map +1 -1
- package/dist/sqlite-db-helper.js +40 -5
- package/dist/sqlite-db-helper.js.map +1 -1
- package/dist/sqlite-types.d.ts +8 -11
- package/dist/sqlite-types.d.ts.map +1 -1
- package/dist/sqlite-types.js +3 -3
- package/dist/sqlite-types.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +47 -25
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +269 -154
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/errors.d.ts +12 -51
- package/dist/sync/errors.d.ts.map +1 -1
- package/dist/sync/errors.js +7 -24
- package/dist/sync/errors.js.map +1 -1
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/mock-sync-backend.d.ts +11 -10
- package/dist/sync/mock-sync-backend.d.ts.map +1 -1
- package/dist/sync/mock-sync-backend.js +97 -74
- package/dist/sync/mock-sync-backend.js.map +1 -1
- package/dist/sync/mock-sync-backend.test.d.ts +2 -0
- package/dist/sync/mock-sync-backend.test.d.ts.map +1 -0
- package/dist/sync/mock-sync-backend.test.js +49 -0
- package/dist/sync/mock-sync-backend.test.js.map +1 -0
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/compact-events.js +11 -12
- package/dist/sync/next/compact-events.js.map +1 -1
- package/dist/sync/next/facts.d.ts +5 -5
- package/dist/sync/next/facts.d.ts.map +1 -1
- package/dist/sync/next/facts.js +7 -8
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +58 -15
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +219 -9
- package/dist/sync/next/history-dag-common.js.map +1 -1
- package/dist/sync/next/history-dag.d.ts.map +1 -1
- package/dist/sync/next/history-dag.js +12 -11
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +5 -5
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js +6 -6
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
- package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
- package/dist/sync/next/test/compact-events.test.d.ts.map +1 -1
- package/dist/sync/next/test/compact-events.test.js +2 -2
- package/dist/sync/next/test/compact-events.test.js.map +1 -1
- package/dist/sync/next/test/event-fixtures.d.ts +9 -9
- package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
- package/dist/sync/next/test/event-fixtures.js +12 -12
- package/dist/sync/next/test/event-fixtures.js.map +1 -1
- package/dist/sync/next/test/history-dag-common.test.d.ts +2 -0
- package/dist/sync/next/test/history-dag-common.test.d.ts.map +1 -0
- package/dist/sync/next/test/history-dag-common.test.js +73 -0
- package/dist/sync/next/test/history-dag-common.test.js.map +1 -0
- package/dist/sync/sync-backend-kv.d.ts +3 -3
- package/dist/sync/sync-backend-kv.d.ts.map +1 -1
- package/dist/sync/sync-backend-kv.js +6 -4
- package/dist/sync/sync-backend-kv.js.map +1 -1
- package/dist/sync/sync-backend.d.ts +41 -21
- package/dist/sync/sync-backend.d.ts.map +1 -1
- package/dist/sync/sync-backend.js +45 -4
- package/dist/sync/sync-backend.js.map +1 -1
- package/dist/sync/sync.d.ts +23 -2
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/syncstate.d.ts +115 -191
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +108 -129
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +289 -161
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/transport-chunking.d.ts +35 -0
- package/dist/sync/transport-chunking.d.ts.map +1 -0
- package/dist/sync/transport-chunking.js +47 -0
- package/dist/sync/transport-chunking.js.map +1 -0
- package/dist/sync/validate-push-payload.d.ts +2 -2
- package/dist/sync/validate-push-payload.d.ts.map +1 -1
- package/dist/sync/validate-push-payload.js +4 -6
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/testing/event-factory.d.ts +3 -3
- package/dist/testing/event-factory.d.ts.map +1 -1
- package/dist/testing/event-factory.js +5 -7
- package/dist/testing/event-factory.js.map +1 -1
- package/dist/util.d.ts +11 -4
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +21 -4
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +24 -5
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +25 -8
- package/dist/version.js.map +1 -1
- package/package.json +50 -16
- package/src/ClientSessionLeaderThreadProxy.ts +27 -12
- package/src/MaterializationJournal.ts +184 -0
- package/src/StateHead.ts +80 -0
- package/src/WorkerTransportError.ts +12 -0
- package/src/__tests__/fixture.ts +3 -3
- package/src/adapter-types.ts +62 -56
- package/src/bounded-collections.ts +6 -5
- package/src/debug-info.ts +54 -43
- package/src/defs.ts +2 -2
- package/src/devtools/devtools-compatibility.test.ts +19 -0
- package/src/devtools/devtools-messages-client-session.ts +72 -63
- package/src/devtools/devtools-messages-common.ts +18 -22
- package/src/devtools/devtools-messages-leader.ts +89 -68
- package/src/devtools/devtools-sessioninfo.ts +17 -12
- package/src/devtools/mod.ts +15 -7
- package/src/errors.ts +58 -38
- package/src/index.ts +11 -1
- package/src/leader-thread/LeaderSyncProcessor.ts +927 -674
- package/src/leader-thread/RejectedPushError.ts +119 -0
- package/src/leader-thread/connection.ts +13 -9
- package/src/leader-thread/eventlog.ts +114 -41
- package/src/leader-thread/leader-worker-devtools.ts +223 -124
- package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
- package/src/leader-thread/make-leader-thread-layer.ts +170 -82
- package/src/leader-thread/materialize-event.ts +51 -16
- package/src/leader-thread/mod.ts +1 -0
- package/src/leader-thread/recreate-db.ts +26 -61
- package/src/leader-thread/shutdown-channel.ts +3 -18
- package/src/leader-thread/stream-events.ts +209 -0
- package/src/leader-thread/types.ts +77 -65
- package/src/logging.ts +15 -0
- package/src/make-client-session.ts +16 -10
- package/src/materializer-helper.ts +31 -49
- package/src/otel.ts +15 -13
- package/src/rematerialize-from-eventlog.ts +106 -93
- package/src/schema/EventDef/define.test.ts +28 -0
- package/src/schema/EventDef/define.ts +218 -0
- package/src/schema/EventDef/deprecated.test.ts +122 -0
- package/src/schema/EventDef/deprecated.ts +172 -0
- package/src/schema/EventDef/event-def.ts +123 -0
- package/src/schema/EventDef/facts.ts +135 -0
- package/src/schema/EventDef/materializer.ts +172 -0
- package/src/schema/EventDef/mod.ts +5 -0
- package/src/schema/EventSequenceNumber/client.ts +256 -0
- package/src/schema/EventSequenceNumber/global.ts +19 -0
- package/src/schema/EventSequenceNumber/mod.ts +37 -0
- package/src/schema/EventSequenceNumber.test.ts +72 -53
- package/src/schema/LiveStoreEvent/client.test.ts +142 -0
- package/src/schema/LiveStoreEvent/client.ts +236 -0
- package/src/schema/LiveStoreEvent/for-event-def.ts +60 -0
- package/src/schema/LiveStoreEvent/global.ts +45 -0
- package/src/schema/LiveStoreEvent/input.ts +63 -0
- package/src/schema/LiveStoreEvent/mod.ts +4 -0
- package/src/schema/events.ts +1 -1
- package/src/schema/mod.ts +7 -4
- package/src/schema/schema.ts +48 -6
- package/src/schema/state/sqlite/client-document-def.test.ts +172 -14
- package/src/schema/state/sqlite/client-document-def.ts +126 -98
- package/src/schema/state/sqlite/column-annotations.test.ts +27 -45
- package/src/schema/state/sqlite/column-annotations.ts +27 -30
- package/src/schema/state/sqlite/column-def.test.ts +186 -77
- package/src/schema/state/sqlite/column-def.ts +169 -62
- package/src/schema/state/sqlite/column-spec.test.ts +34 -19
- package/src/schema/state/sqlite/column-spec.ts +38 -11
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +17 -7
- package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +123 -63
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +37 -17
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +65 -45
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +48 -40
- package/src/schema/state/sqlite/mod.ts +9 -12
- package/src/schema/state/sqlite/persistence.ts +11 -0
- package/src/schema/state/sqlite/query-builder/api.ts +61 -23
- package/src/schema/state/sqlite/query-builder/astToSql.ts +117 -23
- package/src/schema/state/sqlite/query-builder/impl.test.ts +489 -551
- package/src/schema/state/sqlite/query-builder/impl.ts +43 -26
- package/src/schema/state/sqlite/schema-helpers.test.ts +44 -0
- package/src/schema/state/sqlite/schema-helpers.ts +30 -22
- package/src/schema/state/sqlite/system-tables/eventlog-tables.ts +64 -0
- package/src/schema/state/sqlite/system-tables/mod.ts +2 -0
- package/src/schema/state/sqlite/system-tables/state-tables.ts +109 -0
- package/src/schema/state/sqlite/table-def.test.ts +295 -46
- package/src/schema/state/sqlite/table-def.ts +109 -64
- package/src/schema/unknown-events.ts +132 -0
- package/src/schema-management/__tests__/migrations-autoincrement-quoting.test.ts +88 -0
- package/src/schema-management/common.ts +2 -2
- package/src/schema-management/migrations.ts +42 -9
- package/src/schema-management/validate-schema.ts +3 -3
- package/src/session-id-symbol.ts +59 -0
- package/src/sql-queries/sql-queries.ts +26 -18
- package/src/sql-queries/sql-query-builder.ts +1 -0
- package/src/sql-queries/types.ts +6 -7
- package/src/sqlite-db-helper.ts +67 -5
- package/src/sqlite-types.ts +9 -11
- package/src/sync/ClientSessionSyncProcessor.ts +388 -194
- package/src/sync/errors.ts +18 -28
- package/src/sync/index.ts +2 -0
- package/src/sync/mock-sync-backend.test.ts +78 -0
- package/src/sync/mock-sync-backend.ts +196 -108
- package/src/sync/next/compact-events.ts +10 -11
- package/src/sync/next/facts.ts +13 -14
- package/src/sync/next/history-dag-common.ts +306 -26
- package/src/sync/next/history-dag.ts +20 -13
- package/src/sync/next/rebase-events.ts +12 -12
- package/src/sync/next/test/compact-events.calculator.test.ts +5 -4
- package/src/sync/next/test/compact-events.test.ts +4 -3
- package/src/sync/next/test/event-fixtures.ts +14 -14
- package/src/sync/next/test/history-dag-common.test.ts +87 -0
- package/src/sync/sync-backend-kv.ts +7 -4
- package/src/sync/sync-backend.ts +75 -26
- package/src/sync/sync.ts +24 -2
- package/src/sync/syncstate.test.ts +657 -442
- package/src/sync/syncstate.ts +175 -160
- package/src/sync/transport-chunking.ts +85 -0
- package/src/sync/validate-push-payload.ts +6 -8
- package/src/testing/event-factory.ts +10 -12
- package/src/util.ts +20 -11
- package/src/version.ts +32 -8
- package/dist/schema/EventDef.d.ts +0 -126
- package/dist/schema/EventDef.d.ts.map +0 -1
- package/dist/schema/EventDef.js +0 -46
- package/dist/schema/EventDef.js.map +0 -1
- package/dist/schema/EventSequenceNumber.d.ts +0 -80
- package/dist/schema/EventSequenceNumber.d.ts.map +0 -1
- package/dist/schema/EventSequenceNumber.js +0 -139
- package/dist/schema/EventSequenceNumber.js.map +0 -1
- package/dist/schema/LiveStoreEvent.d.ts +0 -306
- package/dist/schema/LiveStoreEvent.d.ts.map +0 -1
- package/dist/schema/LiveStoreEvent.js +0 -147
- package/dist/schema/LiveStoreEvent.js.map +0 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +0 -976
- package/dist/schema/state/sqlite/system-tables.d.ts.map +0 -1
- package/dist/schema/state/sqlite/system-tables.js +0 -81
- package/dist/schema/state/sqlite/system-tables.js.map +0 -1
- package/dist/sql-queries/misc.d.ts +0 -2
- package/dist/sql-queries/misc.d.ts.map +0 -1
- package/dist/sql-queries/misc.js +0 -2
- package/dist/sql-queries/misc.js.map +0 -1
- package/dist/sync/next/graphology.d.ts +0 -8
- package/dist/sync/next/graphology.d.ts.map +0 -1
- package/dist/sync/next/graphology.js +0 -30
- package/dist/sync/next/graphology.js.map +0 -1
- package/dist/sync/next/graphology_.d.ts +0 -3
- package/dist/sync/next/graphology_.d.ts.map +0 -1
- package/dist/sync/next/graphology_.js +0 -3
- package/dist/sync/next/graphology_.js.map +0 -1
- package/src/schema/EventDef.ts +0 -222
- package/src/schema/EventSequenceNumber.ts +0 -199
- package/src/schema/LiveStoreEvent.ts +0 -286
- package/src/schema/state/sqlite/system-tables.ts +0 -106
- package/src/sql-queries/misc.ts +0 -2
- package/src/sync/next/ambient.d.ts +0 -3
- package/src/sync/next/graphology.ts +0 -41
- package/src/sync/next/graphology_.ts +0 -2
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/** biome-ignore-all lint/complexity/noArguments: using arguments is fine here */
|
|
2
1
|
import { casesHandled, shouldNeverHappen } from '@livestore/utils'
|
|
3
|
-
import { Match, Option, Predicate, Schema } from '@livestore/utils/effect'
|
|
2
|
+
import { Match, Option, Predicate, Schema, Struct } from '@livestore/utils/effect'
|
|
4
3
|
|
|
5
4
|
import type { TableDefBase } from '../table-def.ts'
|
|
6
5
|
import type { QueryBuilder, QueryBuilderAst } from './api.ts'
|
|
@@ -9,7 +8,7 @@ import { astToSql } from './astToSql.ts'
|
|
|
9
8
|
export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
10
9
|
tableDef: TTableDef,
|
|
11
10
|
ast: QueryBuilderAst = emptyAst(tableDef),
|
|
12
|
-
): QueryBuilder<TResult, TTableDef
|
|
11
|
+
): QueryBuilder<TResult, TTableDef> => {
|
|
13
12
|
const api = {
|
|
14
13
|
select() {
|
|
15
14
|
assertSelectQueryBuilderAst(ast)
|
|
@@ -18,24 +17,26 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
18
17
|
|
|
19
18
|
// Pluck if there's only one column selected
|
|
20
19
|
if (params.length === 1) {
|
|
20
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch requires manual narrowing
|
|
21
21
|
const [col] = params as any as [string]
|
|
22
22
|
return makeQueryBuilder(tableDef, {
|
|
23
23
|
...ast,
|
|
24
|
-
resultSchemaSingle: ast.
|
|
24
|
+
resultSchemaSingle: ast.tableDef.rowSchema.pipe(Schema.pluck(col)),
|
|
25
25
|
select: { columns: [col] },
|
|
26
26
|
})
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch requires manual narrowing
|
|
29
30
|
const columns = params as unknown as ReadonlyArray<string>
|
|
30
31
|
|
|
32
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
31
33
|
return makeQueryBuilder(tableDef, {
|
|
32
34
|
...ast,
|
|
33
35
|
resultSchemaSingle:
|
|
34
|
-
columns.length === 0 ? ast.resultSchemaSingle : ast.
|
|
36
|
+
columns.length === 0 ? ast.resultSchemaSingle : ast.tableDef.rowSchema.mapFields(Struct.pick(columns)),
|
|
35
37
|
select: { columns },
|
|
36
38
|
}) as any
|
|
37
39
|
},
|
|
38
|
-
// biome-ignore lint/complexity/useArrowFunction: prefer function over arrow function for this case
|
|
39
40
|
where: function () {
|
|
40
41
|
if (ast._tag === 'InsertQuery') return invalidQueryBuilder('Cannot use where with insert')
|
|
41
42
|
if (ast._tag === 'RowQuery') return invalidQueryBuilder('Cannot use where with row')
|
|
@@ -45,8 +46,9 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
45
46
|
const newOps = Object.entries(params)
|
|
46
47
|
.filter(([, value]) => value !== undefined)
|
|
47
48
|
.map<QueryBuilderAst.Where>(([col, value]) =>
|
|
48
|
-
Predicate.hasProperty(value, 'op') && Predicate.hasProperty(value, 'value')
|
|
49
|
-
? (
|
|
49
|
+
Predicate.hasProperty(value, 'op') === true && Predicate.hasProperty(value, 'value') === true
|
|
50
|
+
? // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- where clause construction; shape validated at runtime
|
|
51
|
+
({ col, op: value.op, value: value.value } as any)
|
|
50
52
|
: { col, op: '=', value },
|
|
51
53
|
)
|
|
52
54
|
|
|
@@ -55,6 +57,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
55
57
|
case 'SelectQuery':
|
|
56
58
|
case 'UpdateQuery':
|
|
57
59
|
case 'DeleteQuery': {
|
|
60
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
58
61
|
return makeQueryBuilder(tableDef, {
|
|
59
62
|
...ast,
|
|
60
63
|
where: [...ast.where, ...newOps],
|
|
@@ -75,6 +78,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
75
78
|
case 'SelectQuery':
|
|
76
79
|
case 'UpdateQuery':
|
|
77
80
|
case 'DeleteQuery': {
|
|
81
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
78
82
|
return makeQueryBuilder(tableDef, {
|
|
79
83
|
...ast,
|
|
80
84
|
where: [...ast.where, { col, op, value }],
|
|
@@ -92,6 +96,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
92
96
|
if (arguments.length === 0 || arguments.length > 2) return invalidQueryBuilder()
|
|
93
97
|
|
|
94
98
|
if (arguments.length === 1) {
|
|
99
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch requires manual narrowing
|
|
95
100
|
const params = arguments[0] as QueryBuilder.OrderByParams<TTableDef>
|
|
96
101
|
return makeQueryBuilder(tableDef, {
|
|
97
102
|
...ast,
|
|
@@ -99,8 +104,10 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
99
104
|
})
|
|
100
105
|
}
|
|
101
106
|
|
|
107
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch requires manual narrowing
|
|
102
108
|
const [col, direction] = arguments as any as [keyof TTableDef['sqliteDef']['columns'] & string, 'asc' | 'desc']
|
|
103
109
|
|
|
110
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
104
111
|
return makeQueryBuilder(tableDef, {
|
|
105
112
|
...ast,
|
|
106
113
|
orderBy: [...ast.orderBy, { col, direction }],
|
|
@@ -117,14 +124,19 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
117
124
|
return makeQueryBuilder(tableDef, { ...ast, offset: Option.some(offset) })
|
|
118
125
|
},
|
|
119
126
|
count: () => {
|
|
120
|
-
if (
|
|
127
|
+
if (
|
|
128
|
+
isRowQuery(ast) === true ||
|
|
129
|
+
ast._tag === 'InsertQuery' ||
|
|
130
|
+
ast._tag === 'UpdateQuery' ||
|
|
131
|
+
ast._tag === 'DeleteQuery'
|
|
132
|
+
)
|
|
121
133
|
return invalidQueryBuilder()
|
|
122
134
|
|
|
123
135
|
return makeQueryBuilder(tableDef, {
|
|
124
136
|
_tag: 'CountQuery',
|
|
125
137
|
tableDef,
|
|
126
138
|
where: ast.where,
|
|
127
|
-
resultSchema: Schema.Struct({ count: Schema.
|
|
139
|
+
resultSchema: Schema.Struct({ count: Schema.Finite }).pipe(
|
|
128
140
|
Schema.pluck('count'),
|
|
129
141
|
Schema.Array,
|
|
130
142
|
Schema.headOrElse(),
|
|
@@ -172,6 +184,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
172
184
|
insert: (values) => {
|
|
173
185
|
const filteredValues = Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined))
|
|
174
186
|
|
|
187
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
175
188
|
return makeQueryBuilder(tableDef, {
|
|
176
189
|
_tag: 'InsertQuery',
|
|
177
190
|
tableDef,
|
|
@@ -186,7 +199,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
186
199
|
action: 'ignore' | 'replace' | 'update',
|
|
187
200
|
updateValues?: Record<string, unknown>,
|
|
188
201
|
) => {
|
|
189
|
-
const targets = Array.isArray(targetOrTargets) ? targetOrTargets : [targetOrTargets]
|
|
202
|
+
const targets = Array.isArray(targetOrTargets) === true ? targetOrTargets : [targetOrTargets]
|
|
190
203
|
|
|
191
204
|
assertInsertQueryBuilderAst(ast)
|
|
192
205
|
|
|
@@ -200,6 +213,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
200
213
|
Match.exhaustive,
|
|
201
214
|
)
|
|
202
215
|
|
|
216
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
203
217
|
return makeQueryBuilder(tableDef, {
|
|
204
218
|
...ast,
|
|
205
219
|
onConflict,
|
|
@@ -209,10 +223,11 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
209
223
|
returning: (...columns) => {
|
|
210
224
|
assertWriteQueryBuilderAst(ast)
|
|
211
225
|
|
|
226
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
212
227
|
return makeQueryBuilder(tableDef, {
|
|
213
228
|
...ast,
|
|
214
229
|
returning: columns,
|
|
215
|
-
resultSchema: tableDef.rowSchema.
|
|
230
|
+
resultSchema: tableDef.rowSchema.mapFields(Struct.pick(columns)).pipe(Schema.Array),
|
|
216
231
|
}) as any
|
|
217
232
|
},
|
|
218
233
|
|
|
@@ -222,6 +237,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
222
237
|
// Preserve where clauses if coming from a SelectQuery
|
|
223
238
|
const whereClause = ast._tag === 'SelectQuery' ? ast.where : []
|
|
224
239
|
|
|
240
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
225
241
|
return makeQueryBuilder(tableDef, {
|
|
226
242
|
_tag: 'UpdateQuery',
|
|
227
243
|
tableDef,
|
|
@@ -236,6 +252,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
236
252
|
// Preserve where clauses if coming from a SelectQuery
|
|
237
253
|
const whereClause = ast._tag === 'SelectQuery' ? ast.where : []
|
|
238
254
|
|
|
255
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- query builder return type depends on AST state; consumer type safety enforced by api.ts
|
|
239
256
|
return makeQueryBuilder(tableDef, {
|
|
240
257
|
_tag: 'DeleteQuery',
|
|
241
258
|
tableDef,
|
|
@@ -249,6 +266,7 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
|
249
266
|
return {
|
|
250
267
|
[QueryBuilderTypeId]: QueryBuilderTypeId,
|
|
251
268
|
[QueryBuilderAstSymbol]: ast,
|
|
269
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- phantom type field for generic inference only
|
|
252
270
|
ResultType: 'only-for-type-inference' as TResult,
|
|
253
271
|
asSql: () => astToSql(ast),
|
|
254
272
|
toString: () => {
|
|
@@ -278,19 +296,19 @@ const emptyAst = (tableDef: TableDefBase): QueryBuilderAst.SelectQuery => ({
|
|
|
278
296
|
|
|
279
297
|
// Helper functions
|
|
280
298
|
|
|
281
|
-
|
|
299
|
+
const assertSelectQueryBuilderAst: (ast: QueryBuilderAst) => asserts ast is QueryBuilderAst.SelectQuery = (ast) => {
|
|
282
300
|
if (ast._tag !== 'SelectQuery') {
|
|
283
301
|
return shouldNeverHappen(`Expected SelectQuery but got ${ast._tag}`)
|
|
284
302
|
}
|
|
285
303
|
}
|
|
286
304
|
|
|
287
|
-
|
|
305
|
+
const assertInsertQueryBuilderAst: (ast: QueryBuilderAst) => asserts ast is QueryBuilderAst.InsertQuery = (ast) => {
|
|
288
306
|
if (ast._tag !== 'InsertQuery') {
|
|
289
307
|
return shouldNeverHappen(`Expected InsertQuery but got ${ast._tag}`)
|
|
290
308
|
}
|
|
291
309
|
}
|
|
292
310
|
|
|
293
|
-
|
|
311
|
+
const assertWriteQueryBuilderAst: (ast: QueryBuilderAst) => asserts ast is QueryBuilderAst.WriteQuery = (ast) => {
|
|
294
312
|
if (ast._tag !== 'InsertQuery' && ast._tag !== 'UpdateQuery' && ast._tag !== 'DeleteQuery') {
|
|
295
313
|
return shouldNeverHappen(`Expected WriteQuery but got ${ast._tag}`)
|
|
296
314
|
}
|
|
@@ -299,10 +317,10 @@ function assertWriteQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryB
|
|
|
299
317
|
const isRowQuery = (ast: QueryBuilderAst): ast is QueryBuilderAst.RowQuery => ast._tag === 'RowQuery'
|
|
300
318
|
|
|
301
319
|
export const invalidQueryBuilder = (msg?: string) => {
|
|
302
|
-
return shouldNeverHappen(`Invalid query builder${msg ? `: ${msg}` : ''}`)
|
|
320
|
+
return shouldNeverHappen(`Invalid query builder${msg !== undefined ? `: ${msg}` : ''}`)
|
|
303
321
|
}
|
|
304
322
|
|
|
305
|
-
export const getResultSchema = (qb: QueryBuilder<any, any, any>)
|
|
323
|
+
export const getResultSchema = (qb: QueryBuilder<any, any, any>) => {
|
|
306
324
|
const queryAst = qb[QueryBuilderAstSymbol]
|
|
307
325
|
switch (queryAst._tag) {
|
|
308
326
|
case 'SelectQuery': {
|
|
@@ -317,36 +335,35 @@ export const getResultSchema = (qb: QueryBuilder<any, any, any>): Schema.Schema<
|
|
|
317
335
|
return arraySchema.pipe(Schema.headOrElse())
|
|
318
336
|
} else {
|
|
319
337
|
const fallbackValue = queryAst.pickFirst.fallback()
|
|
320
|
-
return Schema.Union(
|
|
338
|
+
return Schema.Array(Schema.Union([queryAst.resultSchemaSingle, Schema.Literal(fallbackValue)])).pipe(
|
|
321
339
|
Schema.headOrElse(() => fallbackValue),
|
|
322
340
|
)
|
|
323
341
|
}
|
|
324
342
|
}
|
|
325
343
|
case 'CountQuery': {
|
|
326
|
-
return Schema.Struct({ count: Schema.
|
|
344
|
+
return Schema.Struct({ count: Schema.Finite }).pipe(Schema.pluck('count'), Schema.Array, Schema.headOrElse())
|
|
327
345
|
}
|
|
328
346
|
case 'InsertQuery':
|
|
329
347
|
case 'UpdateQuery':
|
|
330
348
|
case 'DeleteQuery': {
|
|
331
349
|
// For write operations with RETURNING clause, we need to return the appropriate schema
|
|
332
|
-
if (queryAst.returning && queryAst.returning.length > 0) {
|
|
350
|
+
if (queryAst.returning !== undefined && queryAst.returning.length > 0) {
|
|
333
351
|
// Create a schema for the returned columns
|
|
334
|
-
return queryAst.tableDef.rowSchema.
|
|
352
|
+
return queryAst.tableDef.rowSchema.mapFields(Struct.pick(queryAst.returning)).pipe(Schema.Array)
|
|
335
353
|
}
|
|
336
354
|
|
|
337
355
|
// For write operations without RETURNING, the result is the number of affected rows
|
|
338
|
-
return Schema.
|
|
356
|
+
return Schema.Finite
|
|
339
357
|
}
|
|
340
358
|
case 'RowQuery': {
|
|
341
359
|
return queryAst.tableDef.rowSchema.pipe(
|
|
342
360
|
Schema.pluck('value'),
|
|
343
|
-
Schema.
|
|
361
|
+
Schema.annotate({ title: `${queryAst.tableDef.sqliteDef.name}.value` }),
|
|
344
362
|
Schema.Array,
|
|
345
363
|
Schema.headOrElse(),
|
|
346
364
|
)
|
|
347
365
|
}
|
|
348
|
-
default:
|
|
349
|
-
casesHandled(queryAst)
|
|
350
|
-
}
|
|
366
|
+
default:
|
|
367
|
+
return casesHandled(queryAst)
|
|
351
368
|
}
|
|
352
369
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import * as State from '../mod.ts'
|
|
4
|
+
import { getDefaultValuesDecoded, getDefaultValuesEncoded } from './schema-helpers.ts'
|
|
5
|
+
|
|
6
|
+
describe('schema-helpers', () => {
|
|
7
|
+
it('resolves thunk defaults when decoding values', () => {
|
|
8
|
+
let counter = 0
|
|
9
|
+
const table = State.SQLite.table({
|
|
10
|
+
name: 'sessions',
|
|
11
|
+
columns: {
|
|
12
|
+
id: State.SQLite.text({ primaryKey: true }),
|
|
13
|
+
token: State.SQLite.text({ default: () => `token-${++counter}` }),
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
expect(counter).toBe(0)
|
|
18
|
+
|
|
19
|
+
const firstDefaults = getDefaultValuesDecoded(table)
|
|
20
|
+
const secondDefaults = getDefaultValuesDecoded(table)
|
|
21
|
+
|
|
22
|
+
expect(firstDefaults.token).toBe('token-1')
|
|
23
|
+
expect(secondDefaults.token).toBe('token-2')
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('resolves thunk defaults when encoding values', () => {
|
|
27
|
+
let counter = 0
|
|
28
|
+
const table = State.SQLite.table({
|
|
29
|
+
name: 'sessions_encoded',
|
|
30
|
+
columns: {
|
|
31
|
+
id: State.SQLite.text({ primaryKey: true }),
|
|
32
|
+
token: State.SQLite.text({ default: () => `encoded-${++counter}` }),
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
expect(counter).toBe(0)
|
|
37
|
+
|
|
38
|
+
const firstDefaults = getDefaultValuesEncoded(table)
|
|
39
|
+
const secondDefaults = getDefaultValuesEncoded(table)
|
|
40
|
+
|
|
41
|
+
expect(firstDefaults.token).toBe('encoded-1')
|
|
42
|
+
expect(secondDefaults.token).toBe('encoded-2')
|
|
43
|
+
})
|
|
44
|
+
})
|
|
@@ -2,9 +2,9 @@ import { shouldNeverHappen } from '@livestore/utils'
|
|
|
2
2
|
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
|
|
3
3
|
|
|
4
4
|
import { SqliteDsl } from './db-schema/mod.ts'
|
|
5
|
-
import type {
|
|
5
|
+
import type { TableDefBase } from './table-def.ts'
|
|
6
6
|
|
|
7
|
-
export const getDefaultValuesEncoded = <TTableDef extends
|
|
7
|
+
export const getDefaultValuesEncoded = <TTableDef extends TableDefBase>(
|
|
8
8
|
tableDef: TTableDef,
|
|
9
9
|
fallbackValues?: Record<string, any>,
|
|
10
10
|
) =>
|
|
@@ -13,17 +13,21 @@ export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
|
|
13
13
|
ReadonlyRecord.filter((col, key) => {
|
|
14
14
|
if (fallbackValues?.[key] !== undefined) return true
|
|
15
15
|
if (key === 'id') return false
|
|
16
|
-
return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value)
|
|
16
|
+
return col!.default._tag === 'None' || !SqliteDsl.isSqlDefaultValue(col!.default.value)
|
|
17
|
+
}),
|
|
18
|
+
ReadonlyRecord.map((column, columnName) => {
|
|
19
|
+
if (fallbackValues?.[columnName] !== undefined) return fallbackValues[columnName]
|
|
20
|
+
if (column!.default._tag === 'None') {
|
|
21
|
+
return column!.nullable === true
|
|
22
|
+
? null
|
|
23
|
+
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const defaultValue = column!.default.value
|
|
27
|
+
const resolvedDefault = SqliteDsl.resolveColumnDefault(defaultValue)
|
|
28
|
+
|
|
29
|
+
return Schema.encodeSync(column!.schema)(resolvedDefault)
|
|
17
30
|
}),
|
|
18
|
-
ReadonlyRecord.map((column, columnName) =>
|
|
19
|
-
fallbackValues?.[columnName] === undefined
|
|
20
|
-
? column!.default._tag === 'None'
|
|
21
|
-
? column!.nullable === true
|
|
22
|
-
? null
|
|
23
|
-
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
24
|
-
: Schema.encodeSync(column!.schema)(column!.default.value)
|
|
25
|
-
: fallbackValues[columnName],
|
|
26
|
-
),
|
|
27
31
|
)
|
|
28
32
|
|
|
29
33
|
export const getDefaultValuesDecoded = <TTableDef extends TableDefBase>(
|
|
@@ -35,15 +39,19 @@ export const getDefaultValuesDecoded = <TTableDef extends TableDefBase>(
|
|
|
35
39
|
ReadonlyRecord.filter((col, key) => {
|
|
36
40
|
if (fallbackValues?.[key] !== undefined) return true
|
|
37
41
|
if (key === 'id') return false
|
|
38
|
-
return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value)
|
|
42
|
+
return col!.default._tag === 'None' || !SqliteDsl.isSqlDefaultValue(col!.default.value)
|
|
43
|
+
}),
|
|
44
|
+
ReadonlyRecord.map((column, columnName) => {
|
|
45
|
+
if (fallbackValues?.[columnName] !== undefined) return fallbackValues[columnName]
|
|
46
|
+
if (column!.default._tag === 'None') {
|
|
47
|
+
return column!.nullable === true
|
|
48
|
+
? null
|
|
49
|
+
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const defaultValue = column!.default.value
|
|
53
|
+
const resolvedDefault = SqliteDsl.resolveColumnDefault(defaultValue)
|
|
54
|
+
|
|
55
|
+
return Schema.decodeSync(Schema.toType(column!.schema))(resolvedDefault)
|
|
39
56
|
}),
|
|
40
|
-
ReadonlyRecord.map((column, columnName) =>
|
|
41
|
-
fallbackValues?.[columnName] === undefined
|
|
42
|
-
? column!.default._tag === 'None'
|
|
43
|
-
? column!.nullable === true
|
|
44
|
-
? null
|
|
45
|
-
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
46
|
-
: Schema.validateSync(column!.schema)(column!.default.value)
|
|
47
|
-
: fallbackValues[columnName],
|
|
48
|
-
),
|
|
49
57
|
)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect'
|
|
2
|
+
|
|
3
|
+
import * as EventSequenceNumber from '../../../EventSequenceNumber/mod.ts'
|
|
4
|
+
import { SqliteDsl } from '../db-schema/mod.ts'
|
|
5
|
+
import { table } from '../table-def.ts'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* EVENTLOG DATABASE SYSTEM TABLES
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ CRITICAL: NEVER modify eventlog schemas without bumping `liveStoreStorageFormatVersion`!
|
|
11
|
+
* Eventlog is the source of truth - schema changes cause permanent data loss.
|
|
12
|
+
*
|
|
13
|
+
* TODO: Implement proper eventlog versioning system to prevent accidental data loss
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export const EVENTLOG_META_TABLE = 'eventlog'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Main client-side event log storing all events (global and local/rebased).
|
|
20
|
+
*/
|
|
21
|
+
export const eventlogMetaTable = table({
|
|
22
|
+
name: EVENTLOG_META_TABLE,
|
|
23
|
+
columns: {
|
|
24
|
+
// TODO Adjust modeling so a global event never needs a client id component
|
|
25
|
+
seqNumGlobal: SqliteDsl.integer({ primaryKey: true, schema: EventSequenceNumber.Global.Schema }),
|
|
26
|
+
seqNumClient: SqliteDsl.integer({ primaryKey: true, schema: EventSequenceNumber.Client.Schema }),
|
|
27
|
+
seqNumRebaseGeneration: SqliteDsl.integer({ primaryKey: true }),
|
|
28
|
+
parentSeqNumGlobal: SqliteDsl.integer({ schema: EventSequenceNumber.Global.Schema }),
|
|
29
|
+
parentSeqNumClient: SqliteDsl.integer({ schema: EventSequenceNumber.Client.Schema }),
|
|
30
|
+
parentSeqNumRebaseGeneration: SqliteDsl.integer({}),
|
|
31
|
+
/** Event definition name */
|
|
32
|
+
name: SqliteDsl.text({}),
|
|
33
|
+
argsJson: SqliteDsl.text({ schema: Schema.fromJsonString(Schema.Any) }),
|
|
34
|
+
clientId: SqliteDsl.text({}),
|
|
35
|
+
sessionId: SqliteDsl.text({}),
|
|
36
|
+
schemaHash: SqliteDsl.integer({}),
|
|
37
|
+
syncMetadataJson: SqliteDsl.text({ schema: Schema.fromJsonString(Schema.toCodecJson(Schema.Option(Schema.Json))) }),
|
|
38
|
+
},
|
|
39
|
+
indexes: [
|
|
40
|
+
{ columns: ['seqNumGlobal'], name: 'idx_eventlog_seqNumGlobal' },
|
|
41
|
+
{ columns: ['seqNumGlobal', 'seqNumClient', 'seqNumRebaseGeneration'], name: 'idx_eventlog_seqNum' },
|
|
42
|
+
],
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
export type EventlogMetaRow = typeof eventlogMetaTable.Type
|
|
46
|
+
|
|
47
|
+
export const SYNC_STATUS_TABLE = '__livestore_sync_status'
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Tracks sync status including the remote head position and backend identity.
|
|
51
|
+
*/
|
|
52
|
+
// TODO support sync backend identity (to detect if sync backend changes)
|
|
53
|
+
export const syncStatusTable = table({
|
|
54
|
+
name: SYNC_STATUS_TABLE,
|
|
55
|
+
columns: {
|
|
56
|
+
head: SqliteDsl.integer({ primaryKey: true }),
|
|
57
|
+
// Null means the sync backend is not yet connected and we haven't yet seen a backend ID
|
|
58
|
+
backendId: SqliteDsl.text({ nullable: true }),
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
export type SyncStatusRow = typeof syncStatusTable.Type
|
|
63
|
+
|
|
64
|
+
export const eventlogSystemTables = [eventlogMetaTable, syncStatusTable] as const
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as EventSequenceNumber from '../../../EventSequenceNumber/mod.ts'
|
|
2
|
+
import { SqliteDsl } from '../db-schema/mod.ts'
|
|
3
|
+
import { table } from '../table-def.ts'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* STATE DATABASE SYSTEM TABLES
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ SAFE TO CHANGE: State tables are automatically rebuilt from eventlog when schema changes.
|
|
9
|
+
* No need to bump `liveStoreStorageFormatVersion` (uses hash-based migration via SqliteAst.hash()).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const SCHEMA_META_TABLE = '__livestore_schema'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Tracks schema hashes for user-defined tables to detect schema changes.
|
|
16
|
+
*/
|
|
17
|
+
export const schemaMetaTable = table({
|
|
18
|
+
name: SCHEMA_META_TABLE,
|
|
19
|
+
columns: {
|
|
20
|
+
tableName: SqliteDsl.text({ primaryKey: true }),
|
|
21
|
+
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
22
|
+
/** ISO date format */
|
|
23
|
+
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
24
|
+
},
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export type SchemaMetaRow = typeof schemaMetaTable.Type
|
|
28
|
+
|
|
29
|
+
export const SCHEMA_EVENT_DEFS_META_TABLE = '__livestore_schema_event_defs'
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Tracks schema hashes for event definitions to detect event schema changes.
|
|
33
|
+
*/
|
|
34
|
+
export const schemaEventDefsMetaTable = table({
|
|
35
|
+
name: SCHEMA_EVENT_DEFS_META_TABLE,
|
|
36
|
+
columns: {
|
|
37
|
+
eventName: SqliteDsl.text({ primaryKey: true }),
|
|
38
|
+
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
39
|
+
/** ISO date format */
|
|
40
|
+
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export type SchemaEventDefsMetaRow = typeof schemaEventDefsMetaTable.Type
|
|
45
|
+
|
|
46
|
+
export const STATE_HEAD_META_TABLE = '__livestore_state_head'
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Single-row marker for the latest event sequence number reflected by the state DB.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* This is separate from the session changeset table because confirmed changesets
|
|
53
|
+
* can be removed after they are no longer needed for rollback.
|
|
54
|
+
*/
|
|
55
|
+
export const stateHeadMetaTable = table({
|
|
56
|
+
name: STATE_HEAD_META_TABLE,
|
|
57
|
+
columns: {
|
|
58
|
+
id: SqliteDsl.integer({ primaryKey: true }),
|
|
59
|
+
seqNumGlobal: SqliteDsl.integer({ schema: EventSequenceNumber.Global.Schema }),
|
|
60
|
+
seqNumClient: SqliteDsl.integer({ schema: EventSequenceNumber.Client.Schema }),
|
|
61
|
+
seqNumRebaseGeneration: SqliteDsl.integer({}),
|
|
62
|
+
},
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
export type StateHeadMetaRow = typeof stateHeadMetaTable.Type
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Table which stores SQLite changeset blobs which is used for rolling back
|
|
69
|
+
* read-model state during rebasing.
|
|
70
|
+
*/
|
|
71
|
+
export const SESSION_CHANGESET_META_TABLE = '__livestore_session_changeset'
|
|
72
|
+
|
|
73
|
+
export const sessionChangesetMetaTable = table({
|
|
74
|
+
name: SESSION_CHANGESET_META_TABLE,
|
|
75
|
+
columns: {
|
|
76
|
+
// TODO bring back primary key
|
|
77
|
+
seqNumGlobal: SqliteDsl.integer({ schema: EventSequenceNumber.Global.Schema }),
|
|
78
|
+
seqNumClient: SqliteDsl.integer({ schema: EventSequenceNumber.Client.Schema }),
|
|
79
|
+
seqNumRebaseGeneration: SqliteDsl.integer({}),
|
|
80
|
+
changeset: SqliteDsl.blob({ nullable: true }),
|
|
81
|
+
debug: SqliteDsl.json({ nullable: true }),
|
|
82
|
+
},
|
|
83
|
+
indexes: [{ columns: ['seqNumGlobal', 'seqNumClient'], name: 'idx_session_changeset_id' }],
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
export type SessionChangesetMetaRow = typeof sessionChangesetMetaTable.Type
|
|
87
|
+
|
|
88
|
+
// TODO: Rename the physical table once legacy session changeset consumers have been migrated.
|
|
89
|
+
export const MATERIALIZATION_JOURNAL_META_TABLE = SESSION_CHANGESET_META_TABLE
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Materialization journal used to roll back state database changes during rebasing.
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* This aliases the legacy table definition until all session changeset consumers
|
|
96
|
+
* have adopted the journal service.
|
|
97
|
+
*/
|
|
98
|
+
export const materializationJournalMetaTable = sessionChangesetMetaTable
|
|
99
|
+
|
|
100
|
+
export type MaterializationJournalMetaRow = SessionChangesetMetaRow
|
|
101
|
+
|
|
102
|
+
export const stateSystemTables = [
|
|
103
|
+
schemaMetaTable,
|
|
104
|
+
schemaEventDefsMetaTable,
|
|
105
|
+
stateHeadMetaTable,
|
|
106
|
+
sessionChangesetMetaTable,
|
|
107
|
+
] as const
|
|
108
|
+
|
|
109
|
+
export const isStateSystemTable = (tableName: string) => stateSystemTables.some((_) => _.sqliteDef.name === tableName)
|