@livestore/common 0.3.0-dev.3 → 0.3.0-dev.30
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/__tests__/fixture.d.ts +83 -221
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/__tests__/fixture.js +33 -11
- package/dist/__tests__/fixture.js.map +1 -1
- package/dist/adapter-types.d.ts +128 -68
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +36 -7
- package/dist/adapter-types.js.map +1 -1
- package/dist/bounded-collections.d.ts.map +1 -1
- package/dist/debug-info.d.ts +1 -1
- package/dist/debug-info.d.ts.map +1 -1
- package/dist/debug-info.js +1 -0
- package/dist/debug-info.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +389 -0
- package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -0
- package/dist/devtools/devtools-messages-client-session.js +96 -0
- package/dist/devtools/devtools-messages-client-session.js.map +1 -0
- package/dist/devtools/devtools-messages-common.d.ts +68 -0
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -0
- package/dist/devtools/devtools-messages-common.js +60 -0
- package/dist/devtools/devtools-messages-common.js.map +1 -0
- package/dist/devtools/devtools-messages-leader.d.ts +394 -0
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -0
- package/dist/devtools/devtools-messages-leader.js +147 -0
- package/dist/devtools/devtools-messages-leader.js.map +1 -0
- package/dist/devtools/devtools-messages.d.ts +3 -592
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +3 -171
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/devtools/devtools-sessioninfo.d.ts +28 -0
- package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -0
- package/dist/devtools/devtools-sessioninfo.js +34 -0
- package/dist/devtools/devtools-sessioninfo.js.map +1 -0
- package/dist/devtools/mod.d.ts +39 -0
- package/dist/devtools/mod.d.ts.map +1 -0
- package/dist/devtools/mod.js +27 -0
- package/dist/devtools/mod.js.map +1 -0
- package/dist/index.d.ts +4 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -7
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +62 -0
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -0
- package/dist/leader-thread/LeaderSyncProcessor.js +589 -0
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -0
- package/dist/leader-thread/apply-event.d.ts +16 -0
- package/dist/leader-thread/apply-event.d.ts.map +1 -0
- package/dist/leader-thread/apply-event.js +103 -0
- package/dist/leader-thread/apply-event.js.map +1 -0
- package/dist/leader-thread/connection.d.ts +34 -6
- package/dist/leader-thread/connection.d.ts.map +1 -1
- package/dist/leader-thread/connection.js +22 -7
- package/dist/leader-thread/connection.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +27 -0
- package/dist/leader-thread/eventlog.d.ts.map +1 -0
- package/dist/leader-thread/eventlog.js +123 -0
- package/dist/leader-thread/eventlog.js.map +1 -0
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +154 -132
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +26 -12
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +82 -47
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/mod.d.ts +1 -1
- package/dist/leader-thread/mod.d.ts.map +1 -1
- package/dist/leader-thread/mod.js +1 -1
- package/dist/leader-thread/mod.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts +4 -2
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +35 -25
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -5
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -4
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +86 -39
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js +1 -3
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/materializer-helper.d.ts +23 -0
- package/dist/materializer-helper.d.ts.map +1 -0
- package/dist/materializer-helper.js +70 -0
- package/dist/materializer-helper.js.map +1 -0
- package/dist/otel.d.ts +2 -0
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +5 -0
- package/dist/otel.js.map +1 -1
- package/dist/query-builder/api.d.ts +158 -55
- package/dist/query-builder/api.d.ts.map +1 -1
- package/dist/query-builder/api.js +3 -5
- package/dist/query-builder/api.js.map +1 -1
- package/dist/query-builder/astToSql.d.ts +7 -0
- package/dist/query-builder/astToSql.d.ts.map +1 -0
- package/dist/query-builder/astToSql.js +190 -0
- package/dist/query-builder/astToSql.js.map +1 -0
- package/dist/query-builder/impl.d.ts +3 -8
- package/dist/query-builder/impl.d.ts.map +1 -1
- package/dist/query-builder/impl.js +166 -124
- package/dist/query-builder/impl.js.map +1 -1
- package/dist/query-builder/impl.test.d.ts +86 -1
- package/dist/query-builder/impl.test.d.ts.map +1 -1
- package/dist/query-builder/impl.test.js +411 -69
- package/dist/query-builder/impl.test.js.map +1 -1
- package/dist/query-builder/mod.d.ts +7 -0
- package/dist/query-builder/mod.d.ts.map +1 -1
- package/dist/query-builder/mod.js +7 -0
- package/dist/query-builder/mod.js.map +1 -1
- package/dist/rehydrate-from-eventlog.d.ts +14 -0
- package/dist/rehydrate-from-eventlog.d.ts.map +1 -0
- package/dist/rehydrate-from-eventlog.js +65 -0
- package/dist/rehydrate-from-eventlog.js.map +1 -0
- package/dist/schema/EventDef.d.ts +136 -0
- package/dist/schema/EventDef.d.ts.map +1 -0
- package/dist/schema/EventDef.js +58 -0
- package/dist/schema/EventDef.js.map +1 -0
- package/dist/schema/EventId.d.ts +35 -15
- package/dist/schema/EventId.d.ts.map +1 -1
- package/dist/schema/EventId.js +57 -11
- package/dist/schema/EventId.js.map +1 -1
- package/dist/schema/EventId.test.d.ts +2 -0
- package/dist/schema/EventId.test.d.ts.map +1 -0
- package/dist/schema/EventId.test.js +11 -0
- package/dist/schema/EventId.test.js.map +1 -0
- package/dist/schema/LiveStoreEvent.d.ts +255 -0
- package/dist/schema/LiveStoreEvent.d.ts.map +1 -0
- package/dist/schema/LiveStoreEvent.js +118 -0
- package/dist/schema/LiveStoreEvent.js.map +1 -0
- package/dist/schema/client-document-def.d.ts +223 -0
- package/dist/schema/client-document-def.d.ts.map +1 -0
- package/dist/schema/client-document-def.js +170 -0
- package/dist/schema/client-document-def.js.map +1 -0
- package/dist/schema/client-document-def.test.d.ts +2 -0
- package/dist/schema/client-document-def.test.d.ts.map +1 -0
- package/dist/schema/client-document-def.test.js +201 -0
- package/dist/schema/client-document-def.test.js.map +1 -0
- package/dist/schema/db-schema/ast/sqlite.d.ts +69 -0
- package/dist/schema/db-schema/ast/sqlite.d.ts.map +1 -0
- package/dist/schema/db-schema/ast/sqlite.js +71 -0
- package/dist/schema/db-schema/ast/sqlite.js.map +1 -0
- package/dist/schema/db-schema/ast/validate.d.ts +3 -0
- package/dist/schema/db-schema/ast/validate.d.ts.map +1 -0
- package/dist/schema/db-schema/ast/validate.js +12 -0
- package/dist/schema/db-schema/ast/validate.js.map +1 -0
- package/dist/schema/db-schema/dsl/field-defs.d.ts +90 -0
- package/dist/schema/db-schema/dsl/field-defs.d.ts.map +1 -0
- package/dist/schema/db-schema/dsl/field-defs.js +87 -0
- package/dist/schema/db-schema/dsl/field-defs.js.map +1 -0
- package/dist/schema/db-schema/dsl/field-defs.test.d.ts +2 -0
- package/dist/schema/db-schema/dsl/field-defs.test.d.ts.map +1 -0
- package/dist/schema/db-schema/dsl/field-defs.test.js +29 -0
- package/dist/schema/db-schema/dsl/field-defs.test.js.map +1 -0
- package/dist/schema/db-schema/dsl/mod.d.ts +90 -0
- package/dist/schema/db-schema/dsl/mod.d.ts.map +1 -0
- package/dist/schema/db-schema/dsl/mod.js +41 -0
- package/dist/schema/db-schema/dsl/mod.js.map +1 -0
- package/dist/schema/db-schema/hash.d.ts +2 -0
- package/dist/schema/db-schema/hash.d.ts.map +1 -0
- package/dist/schema/db-schema/hash.js +14 -0
- package/dist/schema/db-schema/hash.js.map +1 -0
- package/dist/schema/db-schema/mod.d.ts +3 -0
- package/dist/schema/db-schema/mod.d.ts.map +1 -0
- package/dist/schema/db-schema/mod.js +3 -0
- package/dist/schema/db-schema/mod.js.map +1 -0
- package/dist/schema/events.d.ts +2 -0
- package/dist/schema/events.d.ts.map +1 -0
- package/dist/schema/events.js +2 -0
- package/dist/schema/events.js.map +1 -0
- package/dist/schema/mod.d.ts +5 -3
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +5 -3
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema-helpers.d.ts.map +1 -1
- package/dist/schema/schema-helpers.js +1 -1
- package/dist/schema/schema-helpers.js.map +1 -1
- package/dist/schema/schema.d.ts +30 -23
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +48 -35
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/sqlite-state.d.ts +12 -0
- package/dist/schema/sqlite-state.d.ts.map +1 -0
- package/dist/schema/sqlite-state.js +36 -0
- package/dist/schema/sqlite-state.js.map +1 -0
- package/dist/schema/system-tables.d.ts +179 -125
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +76 -41
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/schema/table-def.d.ts +37 -109
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +23 -66
- package/dist/schema/table-def.js.map +1 -1
- package/dist/schema/view.d.ts +3 -0
- package/dist/schema/view.d.ts.map +1 -0
- package/dist/schema/view.js +3 -0
- package/dist/schema/view.js.map +1 -0
- package/dist/schema-management/common.d.ts +7 -7
- package/dist/schema-management/common.d.ts.map +1 -1
- package/dist/schema-management/common.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +6 -6
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +19 -14
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/validate-mutation-defs.d.ts +3 -3
- package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
- package/dist/schema-management/validate-mutation-defs.js +17 -17
- package/dist/schema-management/validate-mutation-defs.js.map +1 -1
- package/dist/sql-queries/misc.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.d.ts +1 -1
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js.map +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts +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 +2 -1
- package/dist/sql-queries/types.d.ts.map +1 -1
- package/dist/sql-queries/types.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +66 -0
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -0
- package/dist/sync/ClientSessionSyncProcessor.js +209 -0
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -0
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/facts.d.ts +19 -19
- package/dist/sync/next/facts.d.ts.map +1 -1
- package/dist/sync/next/facts.js +3 -3
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +6 -7
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +4 -2
- 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 +2 -2
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +10 -8
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js +11 -8
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/compact-events.calculator.test.js +38 -33
- package/dist/sync/next/test/compact-events.calculator.test.js.map +1 -1
- package/dist/sync/next/test/compact-events.test.js +76 -76
- package/dist/sync/next/test/compact-events.test.js.map +1 -1
- package/dist/sync/next/test/{mutation-fixtures.d.ts → event-fixtures.d.ts} +29 -29
- package/dist/sync/next/test/event-fixtures.d.ts.map +1 -0
- package/dist/sync/next/test/{mutation-fixtures.js → event-fixtures.js} +67 -36
- package/dist/sync/next/test/event-fixtures.js.map +1 -0
- package/dist/sync/next/test/mod.d.ts +1 -1
- package/dist/sync/next/test/mod.d.ts.map +1 -1
- package/dist/sync/next/test/mod.js +1 -1
- package/dist/sync/next/test/mod.js.map +1 -1
- package/dist/sync/sync.d.ts +55 -20
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +7 -3
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +213 -82
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +319 -120
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +295 -275
- package/dist/sync/syncstate.test.js.map +1 -1
- 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 +2 -2
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/util.d.ts +2 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +6 -6
- package/src/__tests__/fixture.ts +36 -15
- package/src/adapter-types.ts +111 -74
- package/src/debug-info.ts +1 -0
- package/src/devtools/devtools-messages-client-session.ts +141 -0
- package/src/devtools/devtools-messages-common.ts +115 -0
- package/src/devtools/devtools-messages-leader.ts +191 -0
- package/src/devtools/devtools-messages.ts +3 -243
- package/src/devtools/devtools-sessioninfo.ts +99 -0
- package/src/devtools/mod.ts +36 -0
- package/src/index.ts +4 -13
- package/src/leader-thread/LeaderSyncProcessor.ts +935 -0
- package/src/leader-thread/apply-event.ts +173 -0
- package/src/leader-thread/connection.ts +54 -9
- package/src/leader-thread/eventlog.ts +199 -0
- package/src/leader-thread/leader-worker-devtools.ts +212 -189
- package/src/leader-thread/make-leader-thread-layer.ts +143 -77
- package/src/leader-thread/mod.ts +1 -1
- package/src/leader-thread/recreate-db.ts +41 -30
- package/src/leader-thread/shutdown-channel.ts +2 -4
- package/src/leader-thread/types.ts +95 -51
- package/src/materializer-helper.ts +110 -0
- package/src/otel.ts +8 -0
- package/src/query-builder/api.ts +236 -85
- package/src/query-builder/astToSql.ts +232 -0
- package/src/query-builder/impl.test.ts +447 -78
- package/src/query-builder/impl.ts +209 -144
- package/src/query-builder/mod.ts +7 -0
- package/src/rehydrate-from-eventlog.ts +114 -0
- package/src/schema/EventDef.ts +216 -0
- package/src/schema/EventId.test.ts +12 -0
- package/src/schema/EventId.ts +75 -15
- package/src/schema/LiveStoreEvent.ts +239 -0
- package/src/schema/client-document-def.test.ts +239 -0
- package/src/schema/client-document-def.ts +444 -0
- package/src/schema/db-schema/ast/sqlite.ts +142 -0
- package/src/schema/db-schema/ast/validate.ts +13 -0
- package/src/schema/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +206 -0
- package/src/schema/db-schema/dsl/field-defs.test.ts +35 -0
- package/src/schema/db-schema/dsl/field-defs.ts +242 -0
- package/src/schema/db-schema/dsl/mod.ts +222 -0
- package/src/schema/db-schema/hash.ts +14 -0
- package/src/schema/db-schema/mod.ts +2 -0
- package/src/schema/events.ts +1 -0
- package/src/schema/mod.ts +5 -3
- package/src/schema/schema-helpers.ts +1 -1
- package/src/schema/schema.ts +84 -62
- package/src/schema/sqlite-state.ts +62 -0
- package/src/schema/system-tables.ts +68 -50
- package/src/schema/table-def.ts +68 -214
- package/src/schema/view.ts +2 -0
- package/src/schema-management/common.ts +7 -7
- package/src/schema-management/migrations.ts +27 -24
- package/src/schema-management/validate-mutation-defs.ts +22 -24
- package/src/sql-queries/sql-queries.ts +1 -1
- package/src/sql-queries/sql-query-builder.ts +1 -2
- package/src/sql-queries/types.ts +3 -1
- package/src/sync/ClientSessionSyncProcessor.ts +332 -0
- package/src/sync/index.ts +1 -1
- package/src/sync/next/facts.ts +32 -33
- package/src/sync/next/history-dag-common.ts +9 -5
- package/src/sync/next/history-dag.ts +2 -2
- package/src/sync/next/rebase-events.ts +22 -16
- package/src/sync/next/test/compact-events.calculator.test.ts +45 -45
- package/src/sync/next/test/compact-events.test.ts +78 -78
- package/src/sync/next/test/event-fixtures.ts +219 -0
- package/src/sync/next/test/mod.ts +1 -1
- package/src/sync/sync.ts +51 -19
- package/src/sync/syncstate.test.ts +335 -308
- package/src/sync/syncstate.ts +394 -212
- package/src/sync/validate-push-payload.ts +7 -4
- package/src/version.ts +1 -1
- package/tmp/pack.tgz +0 -0
- package/tsconfig.json +2 -1
- package/dist/derived-mutations.d.ts +0 -109
- package/dist/derived-mutations.d.ts.map +0 -1
- package/dist/derived-mutations.js +0 -54
- package/dist/derived-mutations.js.map +0 -1
- package/dist/derived-mutations.test.d.ts +0 -2
- package/dist/derived-mutations.test.d.ts.map +0 -1
- package/dist/derived-mutations.test.js +0 -93
- package/dist/derived-mutations.test.js.map +0 -1
- package/dist/devtools/devtools-bridge.d.ts +0 -12
- package/dist/devtools/devtools-bridge.d.ts.map +0 -1
- package/dist/devtools/devtools-bridge.js +0 -2
- package/dist/devtools/devtools-bridge.js.map +0 -1
- package/dist/devtools/index.d.ts +0 -42
- package/dist/devtools/index.d.ts.map +0 -1
- package/dist/devtools/index.js +0 -48
- package/dist/devtools/index.js.map +0 -1
- package/dist/init-singleton-tables.d.ts +0 -4
- package/dist/init-singleton-tables.d.ts.map +0 -1
- package/dist/init-singleton-tables.js +0 -16
- package/dist/init-singleton-tables.js.map +0 -1
- package/dist/leader-thread/apply-mutation.d.ts +0 -8
- package/dist/leader-thread/apply-mutation.d.ts.map +0 -1
- package/dist/leader-thread/apply-mutation.js +0 -95
- package/dist/leader-thread/apply-mutation.js.map +0 -1
- package/dist/leader-thread/leader-sync-processor.d.ts +0 -47
- package/dist/leader-thread/leader-sync-processor.d.ts.map +0 -1
- package/dist/leader-thread/leader-sync-processor.js +0 -422
- package/dist/leader-thread/leader-sync-processor.js.map +0 -1
- package/dist/leader-thread/mutationlog.d.ts +0 -23
- package/dist/leader-thread/mutationlog.d.ts.map +0 -1
- package/dist/leader-thread/mutationlog.js +0 -27
- package/dist/leader-thread/mutationlog.js.map +0 -1
- package/dist/leader-thread/pull-queue-set.d.ts +0 -7
- package/dist/leader-thread/pull-queue-set.d.ts.map +0 -1
- package/dist/leader-thread/pull-queue-set.js +0 -39
- package/dist/leader-thread/pull-queue-set.js.map +0 -1
- package/dist/mutation.d.ts +0 -13
- package/dist/mutation.d.ts.map +0 -1
- package/dist/mutation.js +0 -57
- package/dist/mutation.js.map +0 -1
- package/dist/query-info.d.ts +0 -38
- package/dist/query-info.d.ts.map +0 -1
- package/dist/query-info.js +0 -7
- package/dist/query-info.js.map +0 -1
- package/dist/rehydrate-from-mutationlog.d.ts +0 -14
- package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
- package/dist/rehydrate-from-mutationlog.js +0 -72
- package/dist/rehydrate-from-mutationlog.js.map +0 -1
- package/dist/schema/MutationEvent.d.ts +0 -191
- package/dist/schema/MutationEvent.d.ts.map +0 -1
- package/dist/schema/MutationEvent.js +0 -56
- package/dist/schema/MutationEvent.js.map +0 -1
- package/dist/schema/mutations.d.ts +0 -107
- package/dist/schema/mutations.d.ts.map +0 -1
- package/dist/schema/mutations.js +0 -42
- package/dist/schema/mutations.js.map +0 -1
- package/dist/sync/client-session-sync-processor.d.ts +0 -45
- package/dist/sync/client-session-sync-processor.d.ts.map +0 -1
- package/dist/sync/client-session-sync-processor.js +0 -131
- package/dist/sync/client-session-sync-processor.js.map +0 -1
- package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
- package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
- package/src/derived-mutations.test.ts +0 -101
- package/src/derived-mutations.ts +0 -166
- package/src/devtools/devtools-bridge.ts +0 -13
- package/src/devtools/index.ts +0 -48
- package/src/init-singleton-tables.ts +0 -24
- package/src/leader-thread/apply-mutation.ts +0 -143
- package/src/leader-thread/leader-sync-processor.ts +0 -666
- package/src/leader-thread/mutationlog.ts +0 -42
- package/src/leader-thread/pull-queue-set.ts +0 -58
- package/src/mutation.ts +0 -81
- package/src/query-info.ts +0 -78
- package/src/rehydrate-from-mutationlog.ts +0 -127
- package/src/schema/MutationEvent.ts +0 -161
- package/src/schema/mutations.ts +0 -192
- package/src/sync/client-session-sync-processor.ts +0 -207
- package/src/sync/next/test/mutation-fixtures.ts +0 -231
package/src/query-builder/api.ts
CHANGED
@@ -1,51 +1,97 @@
|
|
1
|
-
import type { GetValForKey } from '@livestore/utils'
|
1
|
+
import type { GetValForKey, SingleOrReadonlyArray } from '@livestore/utils'
|
2
2
|
import { type Option, Predicate, type Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
4
|
import type { SessionIdSymbol } from '../adapter-types.js'
|
5
|
-
import type {
|
6
|
-
import type {
|
7
|
-
import type {
|
5
|
+
import type { ClientDocumentTableDef } from '../schema/client-document-def.js'
|
6
|
+
import type { SqliteDsl } from '../schema/db-schema/mod.js'
|
7
|
+
import type { State } from '../schema/mod.js'
|
8
8
|
import type { SqlValue } from '../util.js'
|
9
9
|
|
10
|
-
export type QueryBuilderAst =
|
10
|
+
export type QueryBuilderAst =
|
11
|
+
| QueryBuilderAst.SelectQuery
|
12
|
+
| QueryBuilderAst.CountQuery
|
13
|
+
| QueryBuilderAst.RowQuery
|
14
|
+
| QueryBuilderAst.InsertQuery
|
15
|
+
| QueryBuilderAst.UpdateQuery
|
16
|
+
| QueryBuilderAst.DeleteQuery
|
11
17
|
|
12
18
|
export namespace QueryBuilderAst {
|
13
|
-
export
|
19
|
+
export interface SelectQuery {
|
14
20
|
readonly _tag: 'SelectQuery'
|
15
21
|
readonly columns: string[]
|
16
|
-
readonly pickFirst: false | { fallback: () => any }
|
22
|
+
readonly pickFirst: false | { fallback: () => any } | 'no-fallback'
|
17
23
|
readonly select: {
|
18
24
|
columns: ReadonlyArray<string>
|
19
25
|
}
|
20
26
|
readonly orderBy: ReadonlyArray<OrderBy>
|
21
27
|
readonly offset: Option.Option<number>
|
22
28
|
readonly limit: Option.Option<number>
|
23
|
-
readonly tableDef:
|
29
|
+
readonly tableDef: State.SQLite.TableDefBase
|
24
30
|
readonly where: ReadonlyArray<QueryBuilderAst.Where>
|
25
31
|
readonly resultSchemaSingle: Schema.Schema<any>
|
26
32
|
}
|
27
33
|
|
28
|
-
export
|
34
|
+
export interface CountQuery {
|
29
35
|
readonly _tag: 'CountQuery'
|
30
|
-
readonly tableDef:
|
36
|
+
readonly tableDef: State.SQLite.TableDefBase
|
31
37
|
readonly where: ReadonlyArray<QueryBuilderAst.Where>
|
32
38
|
readonly resultSchema: Schema.Schema<number, ReadonlyArray<{ count: number }>>
|
33
39
|
}
|
34
40
|
|
35
|
-
export
|
41
|
+
export interface RowQuery {
|
36
42
|
readonly _tag: 'RowQuery'
|
37
|
-
readonly tableDef:
|
43
|
+
readonly tableDef: State.SQLite.ClientDocumentTableDef.Any
|
38
44
|
readonly id: string | SessionIdSymbol
|
39
|
-
readonly
|
45
|
+
readonly explicitDefaultValues: Record<string, unknown>
|
40
46
|
}
|
41
47
|
|
42
|
-
export
|
48
|
+
export interface InsertQuery {
|
49
|
+
readonly _tag: 'InsertQuery'
|
50
|
+
readonly tableDef: State.SQLite.TableDefBase
|
51
|
+
readonly values: Record<string, unknown>
|
52
|
+
readonly onConflict: OnConflict | undefined
|
53
|
+
readonly returning: string[] | undefined
|
54
|
+
readonly resultSchema: Schema.Schema<any>
|
55
|
+
}
|
56
|
+
|
57
|
+
export interface OnConflict {
|
58
|
+
/** Conflicting column name */
|
59
|
+
readonly targets: string[]
|
60
|
+
readonly action:
|
61
|
+
| { readonly _tag: 'ignore' }
|
62
|
+
| { readonly _tag: 'replace' }
|
63
|
+
| {
|
64
|
+
readonly _tag: 'update'
|
65
|
+
readonly update: Record<string, unknown>
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
export interface UpdateQuery {
|
70
|
+
readonly _tag: 'UpdateQuery'
|
71
|
+
readonly tableDef: State.SQLite.TableDefBase
|
72
|
+
readonly values: Record<string, unknown>
|
73
|
+
readonly where: ReadonlyArray<QueryBuilderAst.Where>
|
74
|
+
readonly returning: string[] | undefined
|
75
|
+
readonly resultSchema: Schema.Schema<any>
|
76
|
+
}
|
77
|
+
|
78
|
+
export interface DeleteQuery {
|
79
|
+
readonly _tag: 'DeleteQuery'
|
80
|
+
readonly tableDef: State.SQLite.TableDefBase
|
81
|
+
readonly where: ReadonlyArray<QueryBuilderAst.Where>
|
82
|
+
readonly returning: string[] | undefined
|
83
|
+
readonly resultSchema: Schema.Schema<any>
|
84
|
+
}
|
85
|
+
|
86
|
+
export type WriteQuery = InsertQuery | UpdateQuery | DeleteQuery
|
87
|
+
|
88
|
+
export interface Where {
|
43
89
|
readonly col: string
|
44
90
|
readonly op: QueryBuilder.WhereOps
|
45
91
|
readonly value: unknown
|
46
92
|
}
|
47
93
|
|
48
|
-
export
|
94
|
+
export interface OrderBy {
|
49
95
|
readonly col: string
|
50
96
|
readonly direction: 'asc' | 'desc'
|
51
97
|
}
|
@@ -53,27 +99,31 @@ export namespace QueryBuilderAst {
|
|
53
99
|
|
54
100
|
export const QueryBuilderAstSymbol = Symbol.for('QueryBuilderAst')
|
55
101
|
export type QueryBuilderAstSymbol = typeof QueryBuilderAstSymbol
|
56
|
-
|
57
|
-
export
|
102
|
+
|
103
|
+
export const QueryBuilderResultSymbol = Symbol.for('QueryBuilderResult')
|
104
|
+
export type QueryBuilderResultSymbol = typeof QueryBuilderResultSymbol
|
105
|
+
|
106
|
+
export const QueryBuilderTypeId = Symbol.for('QueryBuilder')
|
107
|
+
export type QueryBuilderTypeId = typeof QueryBuilderTypeId
|
58
108
|
|
59
109
|
export const isQueryBuilder = (value: unknown): value is QueryBuilder<any, any, any> =>
|
60
|
-
Predicate.hasProperty(value,
|
110
|
+
Predicate.hasProperty(value, QueryBuilderTypeId)
|
61
111
|
|
62
112
|
export type QueryBuilder<
|
63
113
|
TResult,
|
64
|
-
TTableDef extends
|
114
|
+
TTableDef extends State.SQLite.TableDefBase,
|
65
115
|
/** Used to gradually remove features from the API based on the query context */
|
66
116
|
TWithout extends QueryBuilder.ApiFeature = never,
|
67
|
-
TQueryInfo extends QueryInfo = QueryInfo.None,
|
68
117
|
> = {
|
69
|
-
readonly [
|
118
|
+
readonly [QueryBuilderTypeId]: QueryBuilderTypeId
|
70
119
|
readonly [QueryBuilderAstSymbol]: QueryBuilderAst
|
120
|
+
readonly ['ResultType']: TResult
|
71
121
|
readonly asSql: () => { query: string; bindValues: SqlValue[] }
|
72
122
|
readonly toString: () => string
|
73
|
-
} & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout
|
123
|
+
} & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout>, TWithout>
|
74
124
|
|
75
125
|
export namespace QueryBuilder {
|
76
|
-
export type Any = QueryBuilder<any, any, any
|
126
|
+
export type Any = QueryBuilder<any, any, any>
|
77
127
|
export type WhereOps = WhereOps.Equality | WhereOps.Order | WhereOps.Like | WhereOps.In
|
78
128
|
|
79
129
|
export namespace WhereOps {
|
@@ -86,9 +136,22 @@ export namespace QueryBuilder {
|
|
86
136
|
export type MultiValue = In
|
87
137
|
}
|
88
138
|
|
89
|
-
export type ApiFeature =
|
139
|
+
export type ApiFeature =
|
140
|
+
| 'select'
|
141
|
+
| 'where'
|
142
|
+
| 'count'
|
143
|
+
| 'orderBy'
|
144
|
+
| 'offset'
|
145
|
+
| 'limit'
|
146
|
+
| 'first'
|
147
|
+
| 'row'
|
148
|
+
| 'insert'
|
149
|
+
| 'update'
|
150
|
+
| 'delete'
|
151
|
+
| 'returning'
|
152
|
+
| 'onConflict'
|
90
153
|
|
91
|
-
export type WhereParams<TTableDef extends
|
154
|
+
export type WhereParams<TTableDef extends State.SQLite.TableDefBase> = Partial<{
|
92
155
|
[K in keyof TTableDef['sqliteDef']['columns']]:
|
93
156
|
| TTableDef['sqliteDef']['columns'][K]['schema']['Type']
|
94
157
|
| { op: QueryBuilder.WhereOps.SingleValue; value: TTableDef['sqliteDef']['columns'][K]['schema']['Type'] }
|
@@ -99,40 +162,31 @@ export namespace QueryBuilder {
|
|
99
162
|
| undefined
|
100
163
|
}>
|
101
164
|
|
102
|
-
export type OrderByParams<TTableDef extends
|
165
|
+
export type OrderByParams<TTableDef extends State.SQLite.TableDefBase> = ReadonlyArray<{
|
103
166
|
col: keyof TTableDef['sqliteDef']['columns'] & string
|
104
167
|
direction: 'asc' | 'desc'
|
105
168
|
}>
|
106
169
|
|
107
|
-
export type ApiFull<
|
108
|
-
TResult,
|
109
|
-
TTableDef extends DbSchema.TableDefBase,
|
110
|
-
TWithout extends ApiFeature,
|
111
|
-
TQueryInfo extends QueryInfo,
|
112
|
-
> = {
|
170
|
+
export type ApiFull<TResult, TTableDef extends State.SQLite.TableDefBase, TWithout extends ApiFeature> = {
|
113
171
|
/**
|
114
172
|
* `SELECT *` is the default
|
115
173
|
*
|
116
174
|
* Example:
|
117
175
|
* ```ts
|
118
176
|
* db.todos.select('id', 'text', 'completed')
|
119
|
-
* db.todos.select('id'
|
177
|
+
* db.todos.select('id')
|
120
178
|
* ```
|
121
179
|
*/
|
122
180
|
readonly select: {
|
123
|
-
|
124
|
-
|
125
|
-
|
181
|
+
/** Selects and plucks a single column */
|
182
|
+
<TColumn extends keyof TTableDef['sqliteDef']['columns'] & string>(
|
183
|
+
pluckColumn: TColumn,
|
126
184
|
): QueryBuilder<
|
127
|
-
|
128
|
-
? ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']>
|
129
|
-
: ReadonlyArray<{
|
130
|
-
readonly [K in TColumn]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
|
131
|
-
}>,
|
185
|
+
ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']>,
|
132
186
|
TTableDef,
|
133
|
-
TWithout | 'row' | 'select'
|
134
|
-
TQueryInfo
|
187
|
+
TWithout | 'row' | 'select' | 'returning' | 'onConflict'
|
135
188
|
>
|
189
|
+
/** Select multiple columns */
|
136
190
|
<TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(
|
137
191
|
...columns: TColumns[]
|
138
192
|
// TODO also support arbitrary SQL selects
|
@@ -142,8 +196,7 @@ export namespace QueryBuilder {
|
|
142
196
|
readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
|
143
197
|
}>,
|
144
198
|
TTableDef,
|
145
|
-
TWithout | 'row' | 'select' | 'count'
|
146
|
-
TQueryInfo
|
199
|
+
TWithout | 'row' | 'select' | 'count' | 'returning' | 'onConflict'
|
147
200
|
>
|
148
201
|
}
|
149
202
|
|
@@ -163,18 +216,16 @@ export namespace QueryBuilder {
|
|
163
216
|
* TODO: Also support `OR`
|
164
217
|
*/
|
165
218
|
readonly where: {
|
166
|
-
|
167
|
-
params: TParams,
|
168
|
-
): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>
|
219
|
+
(params: QueryBuilder.WhereParams<TTableDef>): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
|
169
220
|
<TColName extends keyof TTableDef['sqliteDef']['columns']>(
|
170
221
|
col: TColName,
|
171
222
|
value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type'],
|
172
|
-
): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'
|
223
|
+
): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
|
173
224
|
<TColName extends keyof TTableDef['sqliteDef']['columns']>(
|
174
225
|
col: TColName,
|
175
226
|
op: QueryBuilder.WhereOps,
|
176
227
|
value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type'],
|
177
|
-
): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'
|
228
|
+
): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select'>
|
178
229
|
}
|
179
230
|
|
180
231
|
/**
|
@@ -187,8 +238,7 @@ export namespace QueryBuilder {
|
|
187
238
|
readonly count: () => QueryBuilder<
|
188
239
|
number,
|
189
240
|
TTableDef,
|
190
|
-
TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit'
|
191
|
-
TQueryInfo
|
241
|
+
TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit' | 'returning' | 'onConflict'
|
192
242
|
>
|
193
243
|
|
194
244
|
/**
|
@@ -201,10 +251,10 @@ export namespace QueryBuilder {
|
|
201
251
|
<TColName extends keyof TTableDef['sqliteDef']['columns'] & string>(
|
202
252
|
col: TColName,
|
203
253
|
direction: 'asc' | 'desc',
|
204
|
-
): QueryBuilder<TResult, TTableDef, TWithout
|
254
|
+
): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>
|
205
255
|
<TParams extends QueryBuilder.OrderByParams<TTableDef>>(
|
206
256
|
params: TParams,
|
207
|
-
): QueryBuilder<TResult, TTableDef, TWithout
|
257
|
+
): QueryBuilder<TResult, TTableDef, TWithout | 'returning' | 'onConflict'>
|
208
258
|
}
|
209
259
|
|
210
260
|
/**
|
@@ -215,7 +265,7 @@ export namespace QueryBuilder {
|
|
215
265
|
*/
|
216
266
|
readonly offset: (
|
217
267
|
offset: number,
|
218
|
-
) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy'
|
268
|
+
) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy' | 'returning' | 'onConflict'>
|
219
269
|
|
220
270
|
/**
|
221
271
|
* Example:
|
@@ -225,65 +275,166 @@ export namespace QueryBuilder {
|
|
225
275
|
*/
|
226
276
|
readonly limit: (
|
227
277
|
limit: number,
|
228
|
-
) => QueryBuilder<
|
278
|
+
) => QueryBuilder<
|
279
|
+
TResult,
|
280
|
+
TTableDef,
|
281
|
+
TWithout | 'row' | 'limit' | 'offset' | 'first' | 'orderBy' | 'returning' | 'onConflict'
|
282
|
+
>
|
229
283
|
|
230
284
|
/**
|
231
285
|
* Example:
|
232
286
|
* ```ts
|
233
287
|
* db.todos.first()
|
288
|
+
* db.todos.where('id', '123').first()
|
234
289
|
* ```
|
290
|
+
*
|
291
|
+
* Query will fail if no rows are returned and no fallback is provided.
|
235
292
|
*/
|
236
|
-
readonly first: <TFallback
|
237
|
-
fallback?: () => TFallback
|
293
|
+
readonly first: <TFallback = never>(options?: {
|
294
|
+
fallback?: () => TFallback | GetSingle<TResult>
|
238
295
|
}) => QueryBuilder<
|
239
296
|
TFallback | GetSingle<TResult>,
|
240
297
|
TTableDef,
|
241
|
-
TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where'
|
242
|
-
|
298
|
+
TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where' | 'returning' | 'onConflict'
|
299
|
+
>
|
300
|
+
|
301
|
+
/**
|
302
|
+
* Insert a new row into the table
|
303
|
+
*
|
304
|
+
* Example:
|
305
|
+
* ```ts
|
306
|
+
* db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' })
|
307
|
+
* ```
|
308
|
+
*/
|
309
|
+
readonly insert: (
|
310
|
+
values: TTableDef['insertSchema']['Type'],
|
311
|
+
) => QueryBuilder<
|
312
|
+
TResult,
|
313
|
+
TTableDef,
|
314
|
+
TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
|
315
|
+
>
|
316
|
+
|
317
|
+
/**
|
318
|
+
* Example: If the row already exists, it will be ignored.
|
319
|
+
* ```ts
|
320
|
+
* db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'ignore')
|
321
|
+
* ```
|
322
|
+
*
|
323
|
+
* Example: If the row already exists, it will be replaced.
|
324
|
+
* ```ts
|
325
|
+
* db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'replace')
|
326
|
+
* ```
|
327
|
+
*
|
328
|
+
* Example: If the row already exists, it will be updated.
|
329
|
+
* ```ts
|
330
|
+
* db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).onConflict('id', 'update', { text: 'Buy soy milk' })
|
331
|
+
* ```
|
332
|
+
*
|
333
|
+
* NOTE This API doesn't yet support composite primary keys.
|
334
|
+
*/
|
335
|
+
readonly onConflict: {
|
336
|
+
<TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(
|
337
|
+
target: TTarget,
|
338
|
+
action: 'ignore' | 'replace',
|
339
|
+
): QueryBuilder<
|
340
|
+
TResult,
|
341
|
+
TTableDef,
|
342
|
+
TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
|
343
|
+
>
|
344
|
+
<TTarget extends SingleOrReadonlyArray<keyof TTableDef['sqliteDef']['columns']>>(
|
345
|
+
target: TTarget,
|
346
|
+
action: 'update',
|
347
|
+
updateValues: Partial<TTableDef['rowSchema']['Type']>,
|
348
|
+
): QueryBuilder<
|
349
|
+
TResult,
|
350
|
+
TTableDef,
|
351
|
+
TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'where'
|
352
|
+
>
|
353
|
+
}
|
354
|
+
|
355
|
+
/**
|
356
|
+
* Similar to the `.select` API but for write queries (insert, update, delete).
|
357
|
+
*
|
358
|
+
* Example:
|
359
|
+
* ```ts
|
360
|
+
* db.todos.insert({ id: '123', text: 'Buy milk', status: 'active' }).returning('id')
|
361
|
+
* ```
|
362
|
+
*/
|
363
|
+
readonly returning: <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(
|
364
|
+
...columns: TColumns[]
|
365
|
+
) => QueryBuilder<
|
366
|
+
ReadonlyArray<{
|
367
|
+
readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type']
|
368
|
+
}>,
|
369
|
+
TTableDef
|
370
|
+
>
|
371
|
+
|
372
|
+
/**
|
373
|
+
* Update rows in the table that match the where clause
|
374
|
+
*
|
375
|
+
* Example:
|
376
|
+
* ```ts
|
377
|
+
* db.todos.update({ status: 'completed' }).where({ id: '123' })
|
378
|
+
* ```
|
379
|
+
*/
|
380
|
+
readonly update: (
|
381
|
+
values: Partial<TTableDef['rowSchema']['Type']>,
|
382
|
+
) => QueryBuilder<
|
383
|
+
TResult,
|
384
|
+
TTableDef,
|
385
|
+
TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'
|
243
386
|
>
|
244
387
|
|
245
388
|
/**
|
246
|
-
*
|
389
|
+
* Delete rows from the table that match the where clause
|
390
|
+
*
|
391
|
+
* Example:
|
392
|
+
* ```ts
|
393
|
+
* db.todos.delete().where({ status: 'completed' })
|
394
|
+
* ```
|
395
|
+
*
|
396
|
+
* Note that it's generally recommended to do soft-deletes for synced apps.
|
247
397
|
*/
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
: TTableDef['options']['requiredInsertColumnNames'] extends never
|
254
|
-
? (
|
255
|
-
id: string | SessionIdSymbol,
|
256
|
-
) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>
|
257
|
-
: <TOptions extends RowQuery.RequiredColumnsOptions<TTableDef>>(
|
258
|
-
id: string | SessionIdSymbol,
|
259
|
-
opts: TOptions,
|
260
|
-
) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>
|
398
|
+
readonly delete: () => QueryBuilder<
|
399
|
+
TResult,
|
400
|
+
TTableDef,
|
401
|
+
TWithout | 'row' | 'select' | 'count' | 'orderBy' | 'first' | 'offset' | 'limit' | 'onConflict'
|
402
|
+
>
|
261
403
|
}
|
262
404
|
}
|
263
405
|
|
264
406
|
export namespace RowQuery {
|
265
|
-
export type
|
407
|
+
export type GetOrCreateOptions<TTableDef extends ClientDocumentTableDef.TraitAny> = {
|
408
|
+
default: Partial<TTableDef['Value']>
|
409
|
+
}
|
410
|
+
|
411
|
+
// TODO get rid of this
|
412
|
+
export type RequiredColumnsOptions<TTableDef extends State.SQLite.TableDefBase> = {
|
266
413
|
/**
|
267
414
|
* Values to be inserted into the row if it doesn't exist yet
|
268
415
|
*/
|
269
|
-
|
416
|
+
explicitDefaultValues: Pick<
|
270
417
|
SqliteDsl.FromColumns.RowDecodedAll<TTableDef['sqliteDef']['columns']>,
|
271
418
|
SqliteDsl.FromColumns.RequiredInsertColumnNames<Omit<TTableDef['sqliteDef']['columns'], 'id'>>
|
272
419
|
>
|
273
420
|
}
|
274
421
|
|
275
|
-
export type Result<TTableDef extends
|
276
|
-
|
277
|
-
|
422
|
+
export type Result<TTableDef extends State.SQLite.TableDefBase> = SqliteDsl.FromColumns.RowDecoded<
|
423
|
+
TTableDef['sqliteDef']['columns']
|
424
|
+
>
|
425
|
+
|
426
|
+
export type DocumentResult<TTableDef extends ClientDocumentTableDef.Any> = GetValForKey<
|
427
|
+
SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>,
|
428
|
+
'value'
|
429
|
+
>
|
278
430
|
|
279
|
-
export type ResultEncoded<TTableDef extends
|
280
|
-
TTableDef['options']['
|
431
|
+
export type ResultEncoded<TTableDef extends State.SQLite.TableDefBase> =
|
432
|
+
TTableDef['options']['isClientDocumentTable'] extends true
|
281
433
|
? GetValForKey<SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>, 'value'>
|
282
434
|
: SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>
|
435
|
+
|
436
|
+
export type GetIdColumnType<TTableDef extends State.SQLite.TableDefBase> =
|
437
|
+
TTableDef['sqliteDef']['columns']['id']['schema']['Type']
|
283
438
|
}
|
284
439
|
|
285
440
|
type GetSingle<T> = T extends ReadonlyArray<infer U> ? U : never
|
286
|
-
|
287
|
-
// export type QueryBuilderParamRef = { _tag: 'QueryBuilderParamRef' }
|
288
|
-
// export type QueryBuilderSelectParams = { [key: string]: QueryBuilderSelectParam }
|
289
|
-
// export type QueryBuilderSelectParam = boolean | ((ref: QueryBuilderParamRef) => QueryBuilder<any, any>)
|