@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
@@ -0,0 +1,255 @@
|
|
1
|
+
import { Option, Schema } from '@livestore/utils/effect';
|
2
|
+
import type { EventDef, EventDefRecord } from './EventDef.js';
|
3
|
+
import * as EventId from './EventId.js';
|
4
|
+
import type { LiveStoreSchema } from './schema.js';
|
5
|
+
export type EventDefPartial<TEventDef extends EventDef.Any> = {
|
6
|
+
name: TEventDef['name'];
|
7
|
+
args: Schema.Schema.Type<TEventDef['schema']>;
|
8
|
+
};
|
9
|
+
export type PartialEncoded<TEventDef extends EventDef.Any> = {
|
10
|
+
name: TEventDef['name'];
|
11
|
+
args: Schema.Schema.Encoded<TEventDef['schema']>;
|
12
|
+
};
|
13
|
+
export type ForEventDef<TEventDef extends EventDef.Any> = {
|
14
|
+
name: TEventDef['name'];
|
15
|
+
args: Schema.Schema.Type<TEventDef['schema']>;
|
16
|
+
id: EventId.EventId;
|
17
|
+
parentId: EventId.EventId;
|
18
|
+
clientId: string;
|
19
|
+
sessionId: string;
|
20
|
+
};
|
21
|
+
export type EventDefEncoded<TEventDef extends EventDef.Any> = {
|
22
|
+
name: TEventDef['name'];
|
23
|
+
args: Schema.Schema.Encoded<TEventDef['schema']>;
|
24
|
+
id: EventId.EventId;
|
25
|
+
parentId: EventId.EventId;
|
26
|
+
clientId: string;
|
27
|
+
sessionId: string;
|
28
|
+
};
|
29
|
+
export type AnyDecoded = ForEventDef<EventDef.Any>;
|
30
|
+
export declare const AnyDecoded: Schema.Struct<{
|
31
|
+
name: typeof Schema.String;
|
32
|
+
args: typeof Schema.Any;
|
33
|
+
id: Schema.Struct<{
|
34
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
35
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
36
|
+
}>;
|
37
|
+
parentId: Schema.Struct<{
|
38
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
39
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
40
|
+
}>;
|
41
|
+
clientId: typeof Schema.String;
|
42
|
+
sessionId: typeof Schema.String;
|
43
|
+
}>;
|
44
|
+
export type AnyEncoded = EventDefEncoded<EventDef.Any>;
|
45
|
+
export declare const AnyEncoded: Schema.Struct<{
|
46
|
+
name: typeof Schema.String;
|
47
|
+
args: typeof Schema.Any;
|
48
|
+
id: Schema.Struct<{
|
49
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
50
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
51
|
+
}>;
|
52
|
+
parentId: Schema.Struct<{
|
53
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
54
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
55
|
+
}>;
|
56
|
+
clientId: typeof Schema.String;
|
57
|
+
sessionId: typeof Schema.String;
|
58
|
+
}>;
|
59
|
+
export declare const AnyEncodedGlobal: Schema.Struct<{
|
60
|
+
name: typeof Schema.String;
|
61
|
+
args: typeof Schema.Any;
|
62
|
+
id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
63
|
+
parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
64
|
+
clientId: typeof Schema.String;
|
65
|
+
sessionId: typeof Schema.String;
|
66
|
+
}>;
|
67
|
+
export type AnyEncodedGlobal = typeof AnyEncodedGlobal.Type;
|
68
|
+
export type PartialAnyDecoded = EventDefPartial<EventDef.Any>;
|
69
|
+
export type PartialAnyEncoded = PartialEncoded<EventDef.Any>;
|
70
|
+
export declare const PartialAnyEncoded: Schema.Struct<{
|
71
|
+
name: typeof Schema.String;
|
72
|
+
args: typeof Schema.Any;
|
73
|
+
}>;
|
74
|
+
export type PartialForSchema<TSchema extends LiveStoreSchema> = {
|
75
|
+
[K in keyof TSchema['_EventDefMapType']]: EventDefPartial<TSchema['_EventDefMapType'][K]>;
|
76
|
+
}[keyof TSchema['_EventDefMapType']];
|
77
|
+
export type ForSchema<TSchema extends LiveStoreSchema> = {
|
78
|
+
[K in keyof TSchema['_EventDefMapType']]: ForEventDef<TSchema['_EventDefMapType'][K]>;
|
79
|
+
}[keyof TSchema['_EventDefMapType']];
|
80
|
+
export declare const isPartialEventDef: (event: AnyDecoded | PartialAnyDecoded) => event is PartialAnyDecoded;
|
81
|
+
export type ForEventDefRecord<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
|
82
|
+
[K in keyof TEventDefRecord]: {
|
83
|
+
name: K;
|
84
|
+
args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
|
85
|
+
id: EventId.EventId;
|
86
|
+
parentId: EventId.EventId;
|
87
|
+
clientId: string;
|
88
|
+
sessionId: string;
|
89
|
+
};
|
90
|
+
}[keyof TEventDefRecord], {
|
91
|
+
[K in keyof TEventDefRecord]: {
|
92
|
+
name: K;
|
93
|
+
args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
|
94
|
+
id: EventId.EventId;
|
95
|
+
parentId: EventId.EventId;
|
96
|
+
clientId: string;
|
97
|
+
sessionId: string;
|
98
|
+
};
|
99
|
+
}[keyof TEventDefRecord]>;
|
100
|
+
export type EventDefPartialSchema<TEventDefRecord extends EventDefRecord> = Schema.Schema<{
|
101
|
+
[K in keyof TEventDefRecord]: {
|
102
|
+
name: K;
|
103
|
+
args: Schema.Schema.Type<TEventDefRecord[K]['schema']>;
|
104
|
+
};
|
105
|
+
}[keyof TEventDefRecord], {
|
106
|
+
[K in keyof TEventDefRecord]: {
|
107
|
+
name: K;
|
108
|
+
args: Schema.Schema.Encoded<TEventDefRecord[K]['schema']>;
|
109
|
+
};
|
110
|
+
}[keyof TEventDefRecord]>;
|
111
|
+
export declare const makeEventDefSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
112
|
+
export declare const makeEventDefPartialSchema: <TSchema extends LiveStoreSchema>(schema: TSchema) => EventDefPartialSchema<TSchema["_EventDefMapType"]>;
|
113
|
+
export declare const makeEventDefSchemaMemo: <TSchema extends LiveStoreSchema>(schema: TSchema) => ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
114
|
+
declare const EncodedWithMeta_base: Schema.Class<EncodedWithMeta, {
|
115
|
+
name: typeof Schema.String;
|
116
|
+
args: typeof Schema.Any;
|
117
|
+
id: Schema.Struct<{
|
118
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
119
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
120
|
+
}>;
|
121
|
+
parentId: Schema.Struct<{
|
122
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
123
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
124
|
+
}>;
|
125
|
+
clientId: typeof Schema.String;
|
126
|
+
sessionId: typeof Schema.String;
|
127
|
+
meta: Schema.PropertySignature<":", {
|
128
|
+
sessionChangeset: {
|
129
|
+
readonly _tag: "sessionChangeset";
|
130
|
+
readonly debug?: any;
|
131
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
132
|
+
} | {
|
133
|
+
readonly _tag: "no-op";
|
134
|
+
} | {
|
135
|
+
readonly _tag: "unset";
|
136
|
+
};
|
137
|
+
syncMetadata: Option.Option<Schema.JsonValue>;
|
138
|
+
}, never, "?:", {
|
139
|
+
sessionChangeset: {
|
140
|
+
readonly _tag: "sessionChangeset";
|
141
|
+
readonly data: readonly number[];
|
142
|
+
readonly debug?: any;
|
143
|
+
} | {
|
144
|
+
readonly _tag: "no-op";
|
145
|
+
} | {
|
146
|
+
readonly _tag: "unset";
|
147
|
+
};
|
148
|
+
syncMetadata: {
|
149
|
+
readonly _tag: "None";
|
150
|
+
} | {
|
151
|
+
readonly value: Schema.JsonValue;
|
152
|
+
readonly _tag: "Some";
|
153
|
+
};
|
154
|
+
} | undefined, true, never>;
|
155
|
+
}, Schema.Struct.Encoded<{
|
156
|
+
name: typeof Schema.String;
|
157
|
+
args: typeof Schema.Any;
|
158
|
+
id: Schema.Struct<{
|
159
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
160
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
161
|
+
}>;
|
162
|
+
parentId: Schema.Struct<{
|
163
|
+
global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
164
|
+
client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
|
165
|
+
}>;
|
166
|
+
clientId: typeof Schema.String;
|
167
|
+
sessionId: typeof Schema.String;
|
168
|
+
meta: Schema.PropertySignature<":", {
|
169
|
+
sessionChangeset: {
|
170
|
+
readonly _tag: "sessionChangeset";
|
171
|
+
readonly debug?: any;
|
172
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
173
|
+
} | {
|
174
|
+
readonly _tag: "no-op";
|
175
|
+
} | {
|
176
|
+
readonly _tag: "unset";
|
177
|
+
};
|
178
|
+
syncMetadata: Option.Option<Schema.JsonValue>;
|
179
|
+
}, never, "?:", {
|
180
|
+
sessionChangeset: {
|
181
|
+
readonly _tag: "sessionChangeset";
|
182
|
+
readonly data: readonly number[];
|
183
|
+
readonly debug?: any;
|
184
|
+
} | {
|
185
|
+
readonly _tag: "no-op";
|
186
|
+
} | {
|
187
|
+
readonly _tag: "unset";
|
188
|
+
};
|
189
|
+
syncMetadata: {
|
190
|
+
readonly _tag: "None";
|
191
|
+
} | {
|
192
|
+
readonly value: Schema.JsonValue;
|
193
|
+
readonly _tag: "Some";
|
194
|
+
};
|
195
|
+
} | undefined, true, never>;
|
196
|
+
}>, never, {
|
197
|
+
readonly name: string;
|
198
|
+
} & {
|
199
|
+
readonly id: {
|
200
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
201
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
202
|
+
};
|
203
|
+
} & {
|
204
|
+
readonly clientId: string;
|
205
|
+
} & {
|
206
|
+
readonly sessionId: string;
|
207
|
+
} & {
|
208
|
+
readonly args: any;
|
209
|
+
} & {
|
210
|
+
readonly parentId: {
|
211
|
+
readonly global: number & import("effect/Brand").Brand<"GlobalEventId">;
|
212
|
+
readonly client: number & import("effect/Brand").Brand<"ClientEventId">;
|
213
|
+
};
|
214
|
+
} & {
|
215
|
+
readonly meta?: {
|
216
|
+
sessionChangeset: {
|
217
|
+
readonly _tag: "sessionChangeset";
|
218
|
+
readonly debug?: any;
|
219
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
220
|
+
} | {
|
221
|
+
readonly _tag: "no-op";
|
222
|
+
} | {
|
223
|
+
readonly _tag: "unset";
|
224
|
+
};
|
225
|
+
syncMetadata: Option.Option<Schema.JsonValue>;
|
226
|
+
} | undefined;
|
227
|
+
}, {}, {}>;
|
228
|
+
/** Equivalent to AnyEncoded but with a meta field and some convenience methods */
|
229
|
+
export declare class EncodedWithMeta extends EncodedWithMeta_base {
|
230
|
+
toJSON: () => any;
|
231
|
+
/**
|
232
|
+
* Example: (global event)
|
233
|
+
* For event id e2 → e1 which should be rebased on event id e3 → e2
|
234
|
+
* the resulting event id will be e4 → e3
|
235
|
+
*
|
236
|
+
* Example: (client event)
|
237
|
+
* For event id e2+1 → e2 which should be rebased on event id e3 → e2
|
238
|
+
* the resulting event id will be e3+1 → e3
|
239
|
+
*
|
240
|
+
* Syntax: e2+2 → e2+1
|
241
|
+
* ^ ^ ^ ^
|
242
|
+
* | | | +- client parent id
|
243
|
+
* | | +--- global parent id
|
244
|
+
* | +-- client id
|
245
|
+
* +---- global id
|
246
|
+
* Client id is ommitted for global events
|
247
|
+
*/
|
248
|
+
rebase: (parentId: EventId.EventId, isClient: boolean) => EncodedWithMeta;
|
249
|
+
static fromGlobal: (event: AnyEncodedGlobal, syncMetadata: Option.Option<Schema.JsonValue>) => EncodedWithMeta;
|
250
|
+
toGlobal: () => AnyEncodedGlobal;
|
251
|
+
}
|
252
|
+
/** NOTE `meta` is not considered for equality */
|
253
|
+
export declare const isEqualEncoded: (a: AnyEncoded, b: AnyEncoded) => boolean;
|
254
|
+
export {};
|
255
|
+
//# sourceMappingURL=LiveStoreEvent.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LiveStoreEvent.d.ts","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,118 @@
|
|
1
|
+
import { memoizeByRef } from '@livestore/utils';
|
2
|
+
import { Option, Schema } from '@livestore/utils/effect';
|
3
|
+
import * as EventId from './EventId.js';
|
4
|
+
export const AnyDecoded = Schema.Struct({
|
5
|
+
name: Schema.String,
|
6
|
+
args: Schema.Any,
|
7
|
+
id: EventId.EventId,
|
8
|
+
parentId: EventId.EventId,
|
9
|
+
clientId: Schema.String,
|
10
|
+
sessionId: Schema.String,
|
11
|
+
}).annotations({ title: 'LiveStoreEvent.AnyDecoded' });
|
12
|
+
export const AnyEncoded = Schema.Struct({
|
13
|
+
name: Schema.String,
|
14
|
+
args: Schema.Any,
|
15
|
+
id: EventId.EventId,
|
16
|
+
parentId: EventId.EventId,
|
17
|
+
clientId: Schema.String,
|
18
|
+
sessionId: Schema.String,
|
19
|
+
}).annotations({ title: 'LiveStoreEvent.AnyEncoded' });
|
20
|
+
export const AnyEncodedGlobal = Schema.Struct({
|
21
|
+
name: Schema.String,
|
22
|
+
args: Schema.Any,
|
23
|
+
id: EventId.GlobalEventId,
|
24
|
+
parentId: EventId.GlobalEventId,
|
25
|
+
clientId: Schema.String,
|
26
|
+
sessionId: Schema.String,
|
27
|
+
}).annotations({ title: 'LiveStoreEvent.AnyEncodedGlobal' });
|
28
|
+
export const PartialAnyEncoded = Schema.Struct({
|
29
|
+
name: Schema.String,
|
30
|
+
args: Schema.Any,
|
31
|
+
});
|
32
|
+
export const isPartialEventDef = (event) => 'id' in event === false && 'parentId' in event === false;
|
33
|
+
export const makeEventDefSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
|
34
|
+
name: Schema.Literal(def.name),
|
35
|
+
args: def.schema,
|
36
|
+
id: EventId.EventId,
|
37
|
+
parentId: EventId.EventId,
|
38
|
+
clientId: Schema.String,
|
39
|
+
sessionId: Schema.String,
|
40
|
+
}))).annotations({ title: 'EventDef' });
|
41
|
+
export const makeEventDefPartialSchema = (schema) => Schema.Union(...[...schema.eventsDefsMap.values()].map((def) => Schema.Struct({
|
42
|
+
name: Schema.Literal(def.name),
|
43
|
+
args: def.schema,
|
44
|
+
}))).annotations({ title: 'EventDefPartial' });
|
45
|
+
export const makeEventDefSchemaMemo = memoizeByRef(makeEventDefSchema);
|
46
|
+
/** Equivalent to AnyEncoded but with a meta field and some convenience methods */
|
47
|
+
export class EncodedWithMeta extends Schema.Class('LiveStoreEvent.EncodedWithMeta')({
|
48
|
+
name: Schema.String,
|
49
|
+
args: Schema.Any,
|
50
|
+
// TODO rename to `.num` / `.parentNum`
|
51
|
+
id: EventId.EventId,
|
52
|
+
parentId: EventId.EventId,
|
53
|
+
clientId: Schema.String,
|
54
|
+
sessionId: Schema.String,
|
55
|
+
// TODO get rid of `meta` again by cleaning up the usage implementations
|
56
|
+
meta: Schema.Struct({
|
57
|
+
sessionChangeset: Schema.Union(Schema.TaggedStruct('sessionChangeset', {
|
58
|
+
data: Schema.Uint8Array,
|
59
|
+
debug: Schema.Any.pipe(Schema.optional),
|
60
|
+
}), Schema.TaggedStruct('no-op', {}), Schema.TaggedStruct('unset', {})),
|
61
|
+
syncMetadata: Schema.Option(Schema.JsonValue),
|
62
|
+
}).pipe(Schema.mutable, Schema.optional, Schema.withDefaults({
|
63
|
+
constructor: () => ({ sessionChangeset: { _tag: 'unset' }, syncMetadata: Option.none() }),
|
64
|
+
decoding: () => ({ sessionChangeset: { _tag: 'unset' }, syncMetadata: Option.none() }),
|
65
|
+
})),
|
66
|
+
}) {
|
67
|
+
toJSON = () => {
|
68
|
+
// Only used for logging/debugging
|
69
|
+
// - More readable way to print the id + parentId
|
70
|
+
// - not including `meta`, `clientId`, `sessionId`
|
71
|
+
return {
|
72
|
+
id: `${EventId.toString(this.id)} → ${EventId.toString(this.parentId)} (${this.clientId}, ${this.sessionId})`,
|
73
|
+
name: this.name,
|
74
|
+
args: this.args,
|
75
|
+
};
|
76
|
+
};
|
77
|
+
/**
|
78
|
+
* Example: (global event)
|
79
|
+
* For event id e2 → e1 which should be rebased on event id e3 → e2
|
80
|
+
* the resulting event id will be e4 → e3
|
81
|
+
*
|
82
|
+
* Example: (client event)
|
83
|
+
* For event id e2+1 → e2 which should be rebased on event id e3 → e2
|
84
|
+
* the resulting event id will be e3+1 → e3
|
85
|
+
*
|
86
|
+
* Syntax: e2+2 → e2+1
|
87
|
+
* ^ ^ ^ ^
|
88
|
+
* | | | +- client parent id
|
89
|
+
* | | +--- global parent id
|
90
|
+
* | +-- client id
|
91
|
+
* +---- global id
|
92
|
+
* Client id is ommitted for global events
|
93
|
+
*/
|
94
|
+
rebase = (parentId, isClient) => new EncodedWithMeta({
|
95
|
+
...this,
|
96
|
+
...EventId.nextPair(parentId, isClient),
|
97
|
+
});
|
98
|
+
static fromGlobal = (event, syncMetadata) => new EncodedWithMeta({
|
99
|
+
...event,
|
100
|
+
id: { global: event.id, client: EventId.clientDefault },
|
101
|
+
parentId: { global: event.parentId, client: EventId.clientDefault },
|
102
|
+
meta: { sessionChangeset: { _tag: 'unset' }, syncMetadata },
|
103
|
+
});
|
104
|
+
toGlobal = () => ({
|
105
|
+
...this,
|
106
|
+
id: this.id.global,
|
107
|
+
parentId: this.parentId.global,
|
108
|
+
});
|
109
|
+
}
|
110
|
+
/** NOTE `meta` is not considered for equality */
|
111
|
+
export const isEqualEncoded = (a, b) => a.id.global === b.id.global &&
|
112
|
+
a.id.client === b.id.client &&
|
113
|
+
a.name === b.name &&
|
114
|
+
a.clientId === b.clientId &&
|
115
|
+
a.sessionId === b.sessionId &&
|
116
|
+
// TODO use schema equality here
|
117
|
+
JSON.stringify(a.args) === JSON.stringify(b.args);
|
118
|
+
//# sourceMappingURL=LiveStoreEvent.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LiveStoreEvent.js","sourceRoot":"","sources":["../../src/schema/LiveStoreEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAgCvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,EAAE,EAAE,OAAO,CAAC,OAAO;IACnB,QAAQ,EAAE,OAAO,CAAC,OAAO;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAA;AAGtD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,EAAE,EAAE,OAAO,CAAC,OAAO;IACnB,QAAQ,EAAE,OAAO,CAAC,OAAO;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,EAAE,EAAE,OAAO,CAAC,aAAa;IACzB,QAAQ,EAAE,OAAO,CAAC,aAAa;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAA;AAM5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;CACjB,CAAC,CAAA;AAUF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAqC,EAA8B,EAAE,CACrG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,UAAU,IAAI,KAAK,KAAK,KAAK,CAAA;AAwC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAe,EACiC,EAAE,CAClD,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC,MAAM;IAChB,EAAE,EAAE,OAAO,CAAC,OAAO;IACnB,QAAQ,EAAE,OAAO,CAAC,OAAO;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CACH,CACF,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAQ,CAAA;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAe,EACqC,EAAE,CACtD,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC,MAAM;CACjB,CAAC,CACH,CACF,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAQ,CAAA;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEtE,kFAAkF;AAClF,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,gCAAgC,CAAC,CAAC;IACnG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAC,OAAO;IACnB,QAAQ,EAAE,OAAO,CAAC,OAAO;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAC5B,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;YACtC,IAAI,EAAE,MAAM,CAAC,UAAU;YACvB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SACxC,CAAC,EACF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,EAChC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CACjC;QACD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;KAC9C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,YAAY,CAAC;QAClB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClG,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;KAChG,CAAC,CACH;CACF,CAAC;IACA,MAAM,GAAG,GAAQ,EAAE;QACjB,kCAAkC;QAClC,iDAAiD;QACjD,kDAAkD;QAClD,OAAO;YACL,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG;YAC7G,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;IACH,CAAC,CAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,GAAG,CAAC,QAAyB,EAAE,QAAiB,EAAE,EAAE,CACxD,IAAI,eAAe,CAAC;QAClB,GAAG,IAAI;QACP,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACxC,CAAC,CAAA;IAEJ,MAAM,CAAC,UAAU,GAAG,CAAC,KAAuB,EAAE,YAA6C,EAAE,EAAE,CAC7F,IAAI,eAAe,CAAC;QAClB,GAAG,KAAK;QACR,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE;QACvD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE;QACnE,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,EAAE,YAAY,EAAE;KACrE,CAAC,CAAA;IAEJ,QAAQ,GAAG,GAAqB,EAAE,CAAC,CAAC;QAClC,GAAG,IAAI;QACP,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;KAC/B,CAAC,CAAA;;AAGJ,iDAAiD;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAa,EAAE,CAAa,EAAE,EAAE,CAC7D,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;IAC3B,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;IAC3B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;IACjB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;IACzB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;IAC3B,gCAAgC;IAChC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA"}
|
@@ -0,0 +1,223 @@
|
|
1
|
+
import type { Option, Types } from '@livestore/utils/effect';
|
2
|
+
import { Schema } from '@livestore/utils/effect';
|
3
|
+
import { SessionIdSymbol } from '../adapter-types.js';
|
4
|
+
import type { QueryBuilder } from '../query-builder/mod.js';
|
5
|
+
import { SqliteDsl } from './db-schema/mod.js';
|
6
|
+
import type { EventDef, Materializer } from './EventDef.js';
|
7
|
+
import type { TableDef, TableDefBase } from './table-def.js';
|
8
|
+
/**
|
9
|
+
* Special:
|
10
|
+
* - Synced across client sessions (e.g. tabs) but not across different clients
|
11
|
+
* - Derived setters
|
12
|
+
* - Emits client-only events
|
13
|
+
* - Has implicit setter-reducers
|
14
|
+
* - Similar to `React.useState` (except it's persisted)
|
15
|
+
*
|
16
|
+
* Careful:
|
17
|
+
* - When changing the table definitions in a non-backwards compatible way, the state might be lost without
|
18
|
+
* explicit reducers to handle the old auto-generated events
|
19
|
+
*/
|
20
|
+
export declare const clientDocument: <TName extends string, TType, TEncoded, const TOptions extends ClientDocumentTableOptions.Input<NoInfer<TType>>>({ name, schema: valueSchema, ...inputOptions }: {
|
21
|
+
name: TName;
|
22
|
+
schema: Schema.Schema<TType, TEncoded>;
|
23
|
+
} & TOptions) => ClientDocumentTableDef<TName, TType, TEncoded, Types.Simplify<ClientDocumentTableOptions.WithDefaults<TOptions>>>;
|
24
|
+
export declare const deriveEventAndMaterializer: ({ name, valueSchema, defaultValue, partialSet, }: {
|
25
|
+
name: string;
|
26
|
+
valueSchema: Schema.Schema<any, any>;
|
27
|
+
defaultValue: any;
|
28
|
+
partialSet: boolean;
|
29
|
+
}) => {
|
30
|
+
eventDef: EventDef<`${string}Set`, {
|
31
|
+
readonly value: any;
|
32
|
+
readonly id: string | typeof SessionIdSymbol;
|
33
|
+
}, {
|
34
|
+
readonly value: any;
|
35
|
+
readonly id: string | typeof SessionIdSymbol;
|
36
|
+
}, true>;
|
37
|
+
materializer: Materializer<EventDef<`${string}Set`, {
|
38
|
+
readonly value: any;
|
39
|
+
readonly id: string | typeof SessionIdSymbol;
|
40
|
+
}, {
|
41
|
+
readonly value: any;
|
42
|
+
readonly id: string | typeof SessionIdSymbol;
|
43
|
+
}, true>>;
|
44
|
+
};
|
45
|
+
export declare const tableIsClientDocumentTable: <TTableDef extends TableDefBase>(tableDef: TTableDef) => tableDef is TTableDef & {
|
46
|
+
options: {
|
47
|
+
isClientDocumentTable: true;
|
48
|
+
};
|
49
|
+
} & ClientDocumentTableDef.Trait<TTableDef["sqliteDef"]["name"], any, any, any>;
|
50
|
+
export type ClientDocumentTableOptions<TType> = {
|
51
|
+
partialSet: boolean;
|
52
|
+
default: {
|
53
|
+
id: SessionIdSymbol | string | undefined;
|
54
|
+
value: TType;
|
55
|
+
};
|
56
|
+
};
|
57
|
+
export declare namespace ClientDocumentTableOptions {
|
58
|
+
type Input<TType> = {
|
59
|
+
/**
|
60
|
+
* Whether to allow for partial set operations. Only applies if the schema is a struct.
|
61
|
+
*
|
62
|
+
* @default true
|
63
|
+
*/
|
64
|
+
partialSet?: boolean;
|
65
|
+
default: {
|
66
|
+
id?: SessionIdSymbol | string | undefined;
|
67
|
+
value: TType;
|
68
|
+
};
|
69
|
+
};
|
70
|
+
type WithDefaults<TInput extends Input<any>> = {
|
71
|
+
partialSet: TInput['partialSet'] extends false ? false : true;
|
72
|
+
default: {
|
73
|
+
id: TInput['default']['id'] extends string | SessionIdSymbol ? TInput['default']['id'] : undefined;
|
74
|
+
value: TInput['default']['value'];
|
75
|
+
};
|
76
|
+
};
|
77
|
+
}
|
78
|
+
export type ClientDocumentTableDef<TName extends string, TType, TEncoded, TOptions extends ClientDocumentTableOptions<TType>> = TableDef<ClientDocumentTableDef.SqliteDef<TName, TType>, {
|
79
|
+
isClientDocumentTable: true;
|
80
|
+
}> & ClientDocumentTableDef.Trait<TName, TType, TEncoded, TOptions>;
|
81
|
+
export declare namespace ClientDocumentTableDef {
|
82
|
+
type Any = ClientDocumentTableDef<any, any, any, any>;
|
83
|
+
type SqliteDef<TName extends string, TType> = SqliteDsl.TableDefinition<TName, {
|
84
|
+
id: SqliteDsl.ColumnDefinition<string, string> & {
|
85
|
+
default: Option.Some<string>;
|
86
|
+
};
|
87
|
+
value: SqliteDsl.ColumnDefinition<string, TType> & {
|
88
|
+
default: Option.Some<TType>;
|
89
|
+
};
|
90
|
+
}>;
|
91
|
+
type TableDefBase_<TName extends string, TType> = TableDefBase<SqliteDef<TName, TType>, {
|
92
|
+
isClientDocumentTable: true;
|
93
|
+
}>;
|
94
|
+
interface Trait<TName extends string, TType, TEncoded, TOptions extends ClientDocumentTableOptions<TType>> {
|
95
|
+
/**
|
96
|
+
* Get the current value of the client document table.
|
97
|
+
*
|
98
|
+
* @example
|
99
|
+
* ```ts
|
100
|
+
* const someDocumentTable = State.SQLite.clientDocument({
|
101
|
+
* name: 'SomeDocumentTable',
|
102
|
+
* schema: Schema.Struct({
|
103
|
+
* someField: Schema.String,
|
104
|
+
* }),
|
105
|
+
* default: { value: { someField: 'some-value' } },
|
106
|
+
* })
|
107
|
+
*
|
108
|
+
* const value$ = queryDb(someDocumentTable.get('some-id'))
|
109
|
+
*
|
110
|
+
* // When you've set a default id, you can omit the id argument
|
111
|
+
*
|
112
|
+
* const uiState = State.SQLite.clientDocument({
|
113
|
+
* name: 'UiState',
|
114
|
+
* schema: Schema.Struct({
|
115
|
+
* someField: Schema.String,
|
116
|
+
* }),
|
117
|
+
* default: { id: SessionIdSymbol, value: { someField: 'some-value' } },
|
118
|
+
* })
|
119
|
+
*
|
120
|
+
* const value$ = queryDb(uiState.get())
|
121
|
+
* ```
|
122
|
+
*/
|
123
|
+
readonly get: MakeGetQueryBuilder<TName, TType, TOptions>;
|
124
|
+
/**
|
125
|
+
* Derived event definition for setting the value of the client document table.
|
126
|
+
* If the document doesn't exist yet, the first .set event will create it.
|
127
|
+
*
|
128
|
+
* @example
|
129
|
+
* ```ts
|
130
|
+
* const someDocumentTable = State.SQLite.clientDocument({
|
131
|
+
* name: 'SomeDocumentTable',
|
132
|
+
* schema: Schema.Struct({
|
133
|
+
* someField: Schema.String,
|
134
|
+
* someOtherField: Schema.String,
|
135
|
+
* }),
|
136
|
+
* default: { value: { someField: 'some-default-value', someOtherField: 'some-other-default-value' } },
|
137
|
+
* })
|
138
|
+
*
|
139
|
+
* const setEventDef = store.commit(someDocumentTable.set({ someField: 'explicit-value' }, 'some-id'))
|
140
|
+
* // Will commit an event with the following payload:
|
141
|
+
* // { id: 'some-id', value: { someField: 'explicit-value', someOtherField: 'some-other-default-value' } }
|
142
|
+
* ```
|
143
|
+
*
|
144
|
+
* Similar to `.get`, you can omit the id argument if you've set a default id.
|
145
|
+
*
|
146
|
+
* @example
|
147
|
+
* ```ts
|
148
|
+
* const uiState = State.SQLite.clientDocument({
|
149
|
+
* name: 'UiState',
|
150
|
+
* schema: Schema.Struct({ someField: Schema.String }),
|
151
|
+
* default: { id: SessionIdSymbol, value: { someField: 'some-default-value' } },
|
152
|
+
* })
|
153
|
+
*
|
154
|
+
* const setEventDef = store.commit(uiState.set({ someField: 'explicit-value' }))
|
155
|
+
* // Will commit an event with the following payload:
|
156
|
+
* // { id: '...', value: { someField: 'explicit-value' } }
|
157
|
+
* // ^^^
|
158
|
+
* // Automatically replaced with the client session id
|
159
|
+
* ```
|
160
|
+
*/
|
161
|
+
readonly set: SetEventDefLike<TName, TType, TOptions>;
|
162
|
+
readonly Value: TType;
|
163
|
+
readonly valueSchema: Schema.Schema<TType, TEncoded>;
|
164
|
+
readonly default: TOptions['default'];
|
165
|
+
readonly [ClientDocumentTableDefSymbol]: {
|
166
|
+
readonly options: TOptions;
|
167
|
+
readonly derived: {
|
168
|
+
readonly setEventDef: SetEventDef<TName, TType, TOptions>;
|
169
|
+
readonly setMaterializer: Materializer<SetEventDef<TName, TType, TOptions>>;
|
170
|
+
};
|
171
|
+
};
|
172
|
+
}
|
173
|
+
type GetOptions<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions> ? TOptions : never;
|
174
|
+
type TraitAny = Trait<any, any, any, any>;
|
175
|
+
type DefaultIdType<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions> ? TOptions['default']['id'] extends SessionIdSymbol | string ? TOptions['default']['id'] : never : never;
|
176
|
+
type SetEventDefLike<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = (TOptions['default']['id'] extends undefined ? (args: TOptions['partialSet'] extends false ? TType : Partial<TType>, id: string | SessionIdSymbol) => {
|
177
|
+
name: `${TName}Set`;
|
178
|
+
args: {
|
179
|
+
id: string;
|
180
|
+
value: TType;
|
181
|
+
};
|
182
|
+
} : (args: TOptions['partialSet'] extends false ? TType : Partial<TType>, id?: string | SessionIdSymbol) => {
|
183
|
+
name: `${TName}Set`;
|
184
|
+
args: {
|
185
|
+
id: string;
|
186
|
+
value: TType;
|
187
|
+
};
|
188
|
+
}) & {
|
189
|
+
readonly name: `${TName}Set`;
|
190
|
+
readonly schema: Schema.Schema<any>;
|
191
|
+
readonly Event: {
|
192
|
+
readonly name: `${TName}Set`;
|
193
|
+
readonly args: {
|
194
|
+
id: string;
|
195
|
+
value: TType;
|
196
|
+
};
|
197
|
+
};
|
198
|
+
readonly options: {
|
199
|
+
derived: true;
|
200
|
+
clientOnly: true;
|
201
|
+
facts: undefined;
|
202
|
+
};
|
203
|
+
};
|
204
|
+
type SetEventDef<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = EventDef<TName, TOptions['partialSet'] extends false ? {
|
205
|
+
id: string;
|
206
|
+
value: TType;
|
207
|
+
} : {
|
208
|
+
id: string;
|
209
|
+
value: Partial<TType>;
|
210
|
+
}, any, true>;
|
211
|
+
type MakeGetQueryBuilder<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = TOptions extends ClientDocumentTableOptions<TType> & {
|
212
|
+
default: {
|
213
|
+
id: string | SessionIdSymbol;
|
214
|
+
};
|
215
|
+
} ? (id?: TOptions['default']['id'] | SessionIdSymbol, options?: {
|
216
|
+
default: Partial<TType>;
|
217
|
+
}) => QueryBuilder<TType, ClientDocumentTableDef.TableDefBase_<TName, TType>, QueryBuilder.ApiFeature> : (id: string | SessionIdSymbol, options?: {
|
218
|
+
default: Partial<TType>;
|
219
|
+
}) => QueryBuilder<TType, ClientDocumentTableDef.TableDefBase_<TName, TType>, QueryBuilder.ApiFeature>;
|
220
|
+
}
|
221
|
+
export declare const ClientDocumentTableDefSymbol: unique symbol;
|
222
|
+
export type ClientDocumentTableDefSymbol = typeof ClientDocumentTableDefSymbol;
|
223
|
+
//# sourceMappingURL=client-document-def.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"client-document-def.d.ts","sourceRoot":"","sources":["../../src/schema/client-document-def.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAa,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,yBAAyB,CAAA;AAG5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,EACR,KAAK,CAAC,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACvE,gDAIC;IACD,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CACvC,GAAG,QAAQ,KAAG,sBAAsB,CACnC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAmElE,CAAA;AAkBD,eAAO,MAAM,0BAA0B,GAAI,kDAKxC;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,EAAE,GAAG,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB;;;;;;;;;;;;;;;CAsEA,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,SAAS,SAAS,YAAY,EACvE,UAAU,SAAS,KAClB,QAAQ,IAAI,SAAS,GAAG;IACzB,OAAO,EAAE;QAAE,qBAAqB,EAAE,IAAI,CAAA;KAAE,CAAA;CACzC,GAAG,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAC7B,CAAA;AAgCjD,MAAM,MAAM,0BAA0B,CAAC,KAAK,IAAI;IAC9C,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE;QACP,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAA;QACxC,KAAK,EAAE,KAAK,CAAA;KACb,CAAA;CACF,CAAA;AAED,yBAAiB,0BAA0B,CAAC;IAC1C,KAAY,KAAK,CAAC,KAAK,IAAI;QACzB;;;;WAIG;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,OAAO,EAAE;YACP,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAA;YACzC,KAAK,EAAE,KAAK,CAAA;SACb,CAAA;KACF,CAAA;IAED,KAAY,YAAY,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI;QACpD,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;QAC7D,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YAClG,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;SAClC,CAAA;KACF,CAAA;CACF;AAED,MAAM,MAAM,sBAAsB,CAChC,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,EACR,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAChD,QAAQ,CACV,sBAAsB,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9C;IACE,qBAAqB,EAAE,IAAI,CAAA;CAC5B,CACF,GACC,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEhE,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAE5D,KAAY,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC,eAAe,CAC5E,KAAK,EACL;QACE,EAAE,EAAE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAAE,CAAA;QACjF,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAAE,CAAA;KACnF,CACF,CAAA;IAED,KAAY,aAAa,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,IAAI,YAAY,CACnE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EACvB;QACE,qBAAqB,EAAE,IAAI,CAAA;KAC5B,CACF,CAAA;IAED,UAAiB,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC;QAC9G;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2BG;QACH,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoCG;QACH,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACrD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACpD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,EAAE;YACvC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;YAC1B,QAAQ,CAAC,OAAO,EAAE;gBAChB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;gBACzD,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;aAC5E,CAAA;SACF,CAAA;KACF;IAED,KAAY,UAAU,CAAC,SAAS,SAAS,QAAQ,IAC/C,SAAS,SAAS,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAA;IAElG,KAAY,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAEhD,KAAY,aAAa,CAAC,SAAS,SAAS,QAAQ,IAClD,SAAS,SAAS,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC,GACzE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,GAAG,MAAM,GACxD,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GACzB,KAAK,GACP,KAAK,CAAA;IAEX,KAAY,eAAe,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAEzG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACxC,CACE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EACnE,EAAE,EAAE,MAAM,GAAG,eAAe,KACzB;QAAE,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;QAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,GAChE,CACE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EACnE,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,KAC1B;QAAE,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;QAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,CAAC,GAAG;QACtE,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAA;QAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,QAAQ,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAA;YAC5B,QAAQ,CAAC,IAAI,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,KAAK,CAAA;aAAE,CAAA;SAC5C,CAAA;QACD,QAAQ,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,IAAI,CAAC;YAAC,UAAU,EAAE,IAAI,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAA;KACxE,CAAA;IAEH,KAAY,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAAI,QAAQ,CACjH,KAAK,EACL,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,EAC3G,GAAG,EACH,IAAI,CACL,CAAA;IAED,KAAY,mBAAmB,CAC7B,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAChD,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,GAAG;QAAE,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CAAA;SAAE,CAAA;KAAE,GAClG,CACE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,EAChD,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,KAClC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,GACrG,CACE,EAAE,EAAE,MAAM,GAAG,eAAe,EAC5B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,KAClC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;CAC1G;AAED,eAAO,MAAM,4BAA4B,eAAmC,CAAA;AAC5E,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA"}
|