@livestore/common 0.4.0-dev.1 → 0.4.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/ClientSessionLeaderThreadProxy.d.ts +7 -2
- package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
- package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
- package/dist/adapter-types.d.ts +9 -3
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
- package/dist/devtools/devtools-messages-common.d.ts +7 -14
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +1 -6
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +27 -25
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/errors.d.ts +47 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +22 -3
- package/dist/errors.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +7 -3
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +122 -49
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +4 -10
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +4 -6
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +6 -2
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +1 -2
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +68 -19
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
- package/dist/leader-thread/materialize-event.d.ts +2 -2
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +23 -9
- package/dist/leader-thread/materialize-event.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts +2 -3
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +1 -1
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -2
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -2
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +7 -5
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/materializer-helper.d.ts +1 -1
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +20 -4
- package/dist/materializer-helper.js.map +1 -1
- package/dist/rematerialize-from-eventlog.d.ts +1 -1
- package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
- package/dist/rematerialize-from-eventlog.js +25 -16
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef.d.ts +3 -0
- package/dist/schema/EventDef.d.ts.map +1 -1
- package/dist/schema/EventDef.js.map +1 -1
- package/dist/schema/LiveStoreEvent.d.ts +1 -1
- package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
- package/dist/schema/LiveStoreEvent.js +1 -2
- package/dist/schema/LiveStoreEvent.js.map +1 -1
- package/dist/schema/mod.d.ts +2 -0
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +1 -0
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema.d.ts +15 -0
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +26 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +35 -5
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +95 -4
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +16 -0
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.js +14 -6
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts +6 -2
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-def.js +122 -185
- package/dist/schema/state/sqlite/column-def.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.test.js +116 -73
- package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +23 -6
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +2 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +1 -1
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +1 -1
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +5 -2
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +6 -2
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +137 -2
- package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +42 -6
- package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
- package/dist/schema/state/sqlite/system-tables.js +2 -0
- package/dist/schema/state/sqlite/system-tables.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.d.ts +4 -4
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +2 -2
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.js +51 -2
- package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
- package/dist/schema/unknown-events.d.ts +47 -0
- package/dist/schema/unknown-events.d.ts.map +1 -0
- package/dist/schema/unknown-events.js +69 -0
- package/dist/schema/unknown-events.js.map +1 -0
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sql-queries/sql-query-builder.js +2 -1
- package/dist/sql-queries/sql-query-builder.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +9 -11
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +35 -33
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/errors.d.ts +61 -0
- package/dist/sync/errors.d.ts.map +1 -0
- package/dist/sync/errors.js +36 -0
- package/dist/sync/errors.js.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +3 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/mock-sync-backend.d.ts +23 -0
- package/dist/sync/mock-sync-backend.d.ts.map +1 -0
- package/dist/sync/mock-sync-backend.js +114 -0
- package/dist/sync/mock-sync-backend.js.map +1 -0
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/compact-events.js +4 -5
- package/dist/sync/next/compact-events.js.map +1 -1
- package/dist/sync/next/facts.d.ts.map +1 -1
- package/dist/sync/next/facts.js +1 -2
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +50 -11
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +193 -4
- 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 +3 -1
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/sync-backend-kv.d.ts +7 -0
- package/dist/sync/sync-backend-kv.d.ts.map +1 -0
- package/dist/sync/sync-backend-kv.js +18 -0
- package/dist/sync/sync-backend-kv.js.map +1 -0
- package/dist/sync/sync-backend.d.ts +105 -0
- package/dist/sync/sync-backend.d.ts.map +1 -0
- package/dist/sync/sync-backend.js +61 -0
- package/dist/sync/sync-backend.js.map +1 -0
- package/dist/sync/sync.d.ts +6 -84
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +2 -27
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/transport-chunking.d.ts +36 -0
- package/dist/sync/transport-chunking.d.ts.map +1 -0
- package/dist/sync/transport-chunking.js +56 -0
- package/dist/sync/transport-chunking.js.map +1 -0
- package/dist/sync/validate-push-payload.d.ts +1 -1
- package/dist/sync/validate-push-payload.d.ts.map +1 -1
- package/dist/sync/validate-push-payload.js +6 -6
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/testing/event-factory.d.ts +68 -0
- package/dist/testing/event-factory.d.ts.map +1 -0
- package/dist/testing/event-factory.js +80 -0
- package/dist/testing/event-factory.js.map +1 -0
- package/dist/testing/mod.d.ts +2 -0
- package/dist/testing/mod.d.ts.map +1 -0
- package/dist/testing/mod.js +2 -0
- package/dist/testing/mod.js.map +1 -0
- package/dist/version.d.ts +2 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +7 -8
- package/src/ClientSessionLeaderThreadProxy.ts +7 -2
- package/src/adapter-types.ts +13 -3
- package/src/devtools/devtools-messages-common.ts +1 -8
- package/src/errors.ts +33 -4
- package/src/leader-thread/LeaderSyncProcessor.ts +179 -57
- package/src/leader-thread/eventlog.ts +10 -6
- package/src/leader-thread/leader-worker-devtools.ts +6 -2
- package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
- package/src/leader-thread/make-leader-thread-layer.ts +137 -26
- package/src/leader-thread/materialize-event.ts +34 -9
- package/src/leader-thread/recreate-db.ts +11 -3
- package/src/leader-thread/shutdown-channel.ts +16 -2
- package/src/leader-thread/types.ts +7 -5
- package/src/materializer-helper.ts +22 -5
- package/src/rematerialize-from-eventlog.ts +33 -23
- package/src/schema/EventDef.ts +3 -0
- package/src/schema/LiveStoreEvent.ts +1 -2
- package/src/schema/mod.ts +2 -0
- package/src/schema/schema.ts +37 -1
- package/src/schema/state/sqlite/client-document-def.test.ts +17 -0
- package/src/schema/state/sqlite/client-document-def.ts +117 -5
- package/src/schema/state/sqlite/column-annotations.ts +16 -6
- package/src/schema/state/sqlite/column-def.test.ts +150 -93
- package/src/schema/state/sqlite/column-def.ts +128 -203
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +26 -6
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +2 -1
- package/src/schema/state/sqlite/mod.ts +1 -0
- package/src/schema/state/sqlite/query-builder/api.ts +7 -2
- package/src/schema/state/sqlite/query-builder/impl.test.ts +187 -6
- package/src/schema/state/sqlite/query-builder/impl.ts +8 -2
- package/src/schema/state/sqlite/system-tables.ts +2 -0
- package/src/schema/state/sqlite/table-def.test.ts +64 -2
- package/src/schema/state/sqlite/table-def.ts +9 -8
- package/src/schema/unknown-events.ts +131 -0
- package/src/sql-queries/sql-query-builder.ts +2 -1
- package/src/sync/ClientSessionSyncProcessor.ts +55 -49
- package/src/sync/errors.ts +38 -0
- package/src/sync/index.ts +3 -0
- package/src/sync/mock-sync-backend.ts +184 -0
- package/src/sync/next/compact-events.ts +4 -5
- package/src/sync/next/facts.ts +1 -3
- package/src/sync/next/history-dag-common.ts +272 -21
- package/src/sync/next/history-dag.ts +3 -1
- package/src/sync/sync-backend-kv.ts +22 -0
- package/src/sync/sync-backend.ts +185 -0
- package/src/sync/sync.ts +6 -89
- package/src/sync/transport-chunking.ts +90 -0
- package/src/sync/validate-push-payload.ts +6 -7
- package/src/testing/event-factory.ts +133 -0
- package/src/testing/mod.ts +1 -0
- package/src/version.ts +2 -2
- package/dist/schema-management/migrations.test.d.ts +0 -2
- package/dist/schema-management/migrations.test.d.ts.map +0 -1
- package/dist/schema-management/migrations.test.js +0 -52
- package/dist/schema-management/migrations.test.js.map +0 -1
- package/dist/sync/next/graphology.d.ts +0 -8
- package/dist/sync/next/graphology.d.ts.map +0 -1
- package/dist/sync/next/graphology.js +0 -30
- package/dist/sync/next/graphology.js.map +0 -1
- package/dist/sync/next/graphology_.d.ts +0 -3
- package/dist/sync/next/graphology_.d.ts.map +0 -1
- package/dist/sync/next/graphology_.js +0 -3
- package/dist/sync/next/graphology_.js.map +0 -1
- package/src/sync/next/ambient.d.ts +0 -3
- package/src/sync/next/graphology.ts +0 -41
- package/src/sync/next/graphology_.ts +0 -2
package/dist/schema/mod.d.ts
CHANGED
@@ -7,4 +7,6 @@ export * as State from './state/mod.ts';
|
|
7
7
|
export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.ts';
|
8
8
|
export * from './state/sqlite/schema-helpers.ts';
|
9
9
|
export * as SystemTables from './state/sqlite/system-tables.ts';
|
10
|
+
export type { UnknownEvents } from './unknown-events.ts';
|
11
|
+
export { normalizeUnknownEventHandling, resolveEventDef } from './unknown-events.ts';
|
10
12
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/schema/mod.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,kCAAkC,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA"}
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,kCAAkC,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/schema/mod.js
CHANGED
@@ -7,4 +7,5 @@ export * as State from "./state/mod.js";
|
|
7
7
|
export { SqliteAst, SqliteDsl } from "./state/sqlite/db-schema/mod.js";
|
8
8
|
export * from "./state/sqlite/schema-helpers.js";
|
9
9
|
export * as SystemTables from "./state/sqlite/system-tables.js";
|
10
|
+
export { normalizeUnknownEventHandling, resolveEventDef } from "./unknown-events.js";
|
10
11
|
//# sourceMappingURL=mod.js.map
|
package/dist/schema/mod.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,kCAAkC,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA"}
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,kCAAkC,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAE/D,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/schema/schema.d.ts
CHANGED
@@ -2,8 +2,10 @@ import type { MigrationOptions } from '../adapter-types.ts';
|
|
2
2
|
import type { EventDef, EventDefRecord, Materializer } from './EventDef.ts';
|
3
3
|
import type { SqliteDsl } from './state/sqlite/db-schema/mod.ts';
|
4
4
|
import type { TableDef } from './state/sqlite/table-def.ts';
|
5
|
+
import type { UnknownEvents } from './unknown-events.ts';
|
5
6
|
export declare const LiveStoreSchemaSymbol: unique symbol;
|
6
7
|
export type LiveStoreSchemaSymbol = typeof LiveStoreSchemaSymbol;
|
8
|
+
export declare const UNKNOWN_EVENT_SCHEMA_HASH = -1;
|
7
9
|
export interface LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbSchema, TEventsDefRecord extends EventDefRecord = EventDefRecord> {
|
8
10
|
readonly LiveStoreSchemaSymbol: LiveStoreSchemaSymbol;
|
9
11
|
/** Only used on type-level */
|
@@ -12,6 +14,7 @@ export interface LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDs
|
|
12
14
|
readonly _EventDefMapType: TEventsDefRecord;
|
13
15
|
readonly state: InternalState;
|
14
16
|
readonly eventsDefsMap: Map<string, EventDef.AnyWithoutFn>;
|
17
|
+
readonly unknownEventHandling: UnknownEvents.HandlingConfig;
|
15
18
|
readonly devtools: {
|
16
19
|
/** @default 'default' */
|
17
20
|
readonly alias: string;
|
@@ -20,6 +23,14 @@ export interface LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDs
|
|
20
23
|
export declare namespace LiveStoreSchema {
|
21
24
|
type Any = LiveStoreSchema<any, any>;
|
22
25
|
}
|
26
|
+
/**
|
27
|
+
* Runtime type guard for LiveStoreSchema.
|
28
|
+
*
|
29
|
+
* The guard intentionally performs lightweight structural checks that are
|
30
|
+
* stable across implementations. It verifies the identifying symbol marker
|
31
|
+
* and the presence of core maps/state used at runtime.
|
32
|
+
*/
|
33
|
+
export declare const isLiveStoreSchema: (value: unknown) => value is LiveStoreSchema<any, any>;
|
23
34
|
export interface InternalState {
|
24
35
|
readonly sqlite: {
|
25
36
|
readonly tables: Map<string, TableDef.Any>;
|
@@ -41,6 +52,10 @@ export interface InputSchema {
|
|
41
52
|
*/
|
42
53
|
readonly alias?: string;
|
43
54
|
};
|
55
|
+
/**
|
56
|
+
* Configures how unknown events should be handled. Defaults to `{ strategy: 'warn' }`.
|
57
|
+
*/
|
58
|
+
readonly unknownEventHandling?: UnknownEvents.HandlingConfig;
|
44
59
|
}
|
45
60
|
export declare const makeSchema: <TInputSchema extends InputSchema>(
|
46
61
|
/** Note when using the object-notation for tables/events, the object keys are ignored and not used as table/mutation names */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/schema.js
CHANGED
@@ -1,7 +1,30 @@
|
|
1
1
|
import { isReadonlyArray, shouldNeverHappen } from '@livestore/utils';
|
2
2
|
import { tableIsClientDocumentTable } from "./state/sqlite/client-document-def.js";
|
3
3
|
import { stateSystemTables } from "./state/sqlite/system-tables.js";
|
4
|
+
import { normalizeUnknownEventHandling } from "./unknown-events.js";
|
4
5
|
export const LiveStoreSchemaSymbol = Symbol.for('livestore.LiveStoreSchema');
|
6
|
+
export const UNKNOWN_EVENT_SCHEMA_HASH = -1;
|
7
|
+
/**
|
8
|
+
* Runtime type guard for LiveStoreSchema.
|
9
|
+
*
|
10
|
+
* The guard intentionally performs lightweight structural checks that are
|
11
|
+
* stable across implementations. It verifies the identifying symbol marker
|
12
|
+
* and the presence of core maps/state used at runtime.
|
13
|
+
*/
|
14
|
+
export const isLiveStoreSchema = (value) => {
|
15
|
+
if (typeof value !== 'object' || value === null)
|
16
|
+
return false;
|
17
|
+
const v = value;
|
18
|
+
// Identity marker must match exactly
|
19
|
+
if (v.LiveStoreSchemaSymbol !== LiveStoreSchemaSymbol)
|
20
|
+
return false;
|
21
|
+
// Core structures used at runtime
|
22
|
+
const hasEventsMap = v.eventsDefsMap instanceof Map;
|
23
|
+
const hasStateSqliteTables = v.state?.sqlite?.tables instanceof Map;
|
24
|
+
const hasStateMaterializers = v.state?.materializers instanceof Map;
|
25
|
+
const hasDevtoolsAlias = typeof v.devtools?.alias === 'string';
|
26
|
+
return hasEventsMap && hasStateSqliteTables && hasStateMaterializers && hasDevtoolsAlias;
|
27
|
+
};
|
5
28
|
export const makeSchema = (
|
6
29
|
/** Note when using the object-notation for tables/events, the object keys are ignored and not used as table/mutation names */
|
7
30
|
inputSchema) => {
|
@@ -29,12 +52,14 @@ inputSchema) => {
|
|
29
52
|
eventsDefsMap.set(tableDef.set.name, tableDef.set);
|
30
53
|
}
|
31
54
|
}
|
55
|
+
const unknownEventHandling = normalizeUnknownEventHandling(inputSchema.unknownEventHandling);
|
32
56
|
return {
|
33
57
|
LiveStoreSchemaSymbol,
|
34
58
|
_DbSchemaType: Symbol.for('livestore.DbSchemaType'),
|
35
59
|
_EventDefMapType: Symbol.for('livestore.EventDefMapType'),
|
36
60
|
state,
|
37
61
|
eventsDefsMap,
|
62
|
+
unknownEventHandling,
|
38
63
|
devtools: {
|
39
64
|
alias: inputSchema.devtools?.alias ?? 'default',
|
40
65
|
},
|
@@ -43,7 +68,7 @@ inputSchema) => {
|
|
43
68
|
export const getEventDef = (schema, eventName) => {
|
44
69
|
const eventDef = schema.eventsDefsMap.get(eventName);
|
45
70
|
if (eventDef === undefined) {
|
46
|
-
return shouldNeverHappen(`No
|
71
|
+
return shouldNeverHappen(`No event definition found for \`${eventName}\`.`);
|
47
72
|
}
|
48
73
|
const materializer = schema.state.materializers.get(eventName);
|
49
74
|
if (materializer === undefined) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
|
@@ -34,6 +34,34 @@ export declare const clientDocument: <TName extends string, TType, TEncoded, con
|
|
34
34
|
schema: Schema.Schema<TType, TEncoded>;
|
35
35
|
} & TOptions) => ClientDocumentTableDef<TName, TType, TEncoded, Types.Simplify<ClientDocumentTableOptions.WithDefaults<TOptions>>>;
|
36
36
|
export declare const mergeDefaultValues: <T>(defaultValues: T, explicitDefaultValues: T) => T;
|
37
|
+
/**
|
38
|
+
* Creates an optimistic schema that accepts historical event formats
|
39
|
+
* and transforms them to the current schema, preserving data and intent.
|
40
|
+
*
|
41
|
+
* Decision Matrix for Schema Changes:
|
42
|
+
*
|
43
|
+
* | Change Type | Partial Set | Full Set | Strategy |
|
44
|
+
* |---------------------|---------------------|----------------------------------|-------------------------|
|
45
|
+
* | **Compatible Changes** |
|
46
|
+
* | Add optional field | Preserve existing | Preserve existing, new field undefined | Direct decode or merge |
|
47
|
+
* | Add required field | Preserve existing | Preserve existing, new field from default | Merge with defaults |
|
48
|
+
* | **Incompatible Changes** |
|
49
|
+
* | Remove field | Drop removed field | Drop removed field, preserve others | Filter & decode |
|
50
|
+
* | Type change | Use default for field | Use default for changed field | Selective merge |
|
51
|
+
* | Rename field | Use default | Use default (can't detect rename) | Fall back to default |
|
52
|
+
* | **Edge Cases** |
|
53
|
+
* | Empty event | Return {} | Return full default | Fallback handling |
|
54
|
+
* | Invalid structure | Return {} | Return full default | Fallback handling |
|
55
|
+
*/
|
56
|
+
export declare const createOptimisticEventSchema: ({ valueSchema, defaultValue, partialSet, }: {
|
57
|
+
valueSchema: Schema.Schema<any, any>;
|
58
|
+
defaultValue: any;
|
59
|
+
partialSet: boolean;
|
60
|
+
}) => Schema.transform<typeof Schema.Unknown, Schema.Schema<any, any, never> | Schema.SchemaClass<{
|
61
|
+
[x: string]: any;
|
62
|
+
}, {
|
63
|
+
[x: string]: any;
|
64
|
+
}, never>>;
|
37
65
|
export declare const deriveEventAndMaterializer: ({ name, valueSchema, defaultValue, partialSet, }: {
|
38
66
|
name: string;
|
39
67
|
valueSchema: Schema.Schema<any, any>;
|
@@ -44,14 +72,14 @@ export declare const deriveEventAndMaterializer: ({ name, valueSchema, defaultVa
|
|
44
72
|
readonly value: any;
|
45
73
|
readonly id: string | typeof SessionIdSymbol;
|
46
74
|
}, {
|
47
|
-
readonly value:
|
75
|
+
readonly value: unknown;
|
48
76
|
readonly id: string | typeof SessionIdSymbol;
|
49
77
|
}, true>;
|
50
78
|
materializer: Materializer<EventDef<`${string}Set`, {
|
51
79
|
readonly value: any;
|
52
80
|
readonly id: string | typeof SessionIdSymbol;
|
53
81
|
}, {
|
54
|
-
readonly value:
|
82
|
+
readonly value: unknown;
|
55
83
|
readonly id: string | typeof SessionIdSymbol;
|
56
84
|
}, true>>;
|
57
85
|
};
|
@@ -68,7 +96,7 @@ export type ClientDocumentTableOptions<TType> = {
|
|
68
96
|
};
|
69
97
|
};
|
70
98
|
export declare namespace ClientDocumentTableOptions {
|
71
|
-
type Input<TType> = {
|
99
|
+
export type Input<TType> = {
|
72
100
|
/**
|
73
101
|
* Whether to allow for partial set operations. Only applies if the schema is a struct.
|
74
102
|
*
|
@@ -80,13 +108,15 @@ export declare namespace ClientDocumentTableOptions {
|
|
80
108
|
value: TType;
|
81
109
|
};
|
82
110
|
};
|
83
|
-
type
|
84
|
-
|
111
|
+
type IsStructLike<T> = T extends {} ? true : false;
|
112
|
+
export type WithDefaults<TInput extends Input<any>> = {
|
113
|
+
partialSet: TInput['partialSet'] extends false ? false : IsStructLike<TInput['default']['value']> extends true ? true : false;
|
85
114
|
default: {
|
86
115
|
id: TInput['default']['id'] extends string | SessionIdSymbol ? TInput['default']['id'] : undefined;
|
87
116
|
value: TInput['default']['value'];
|
88
117
|
};
|
89
118
|
};
|
119
|
+
export {};
|
90
120
|
}
|
91
121
|
export type ClientDocumentTableDef<TName extends string, TType, TEncoded, TOptions extends ClientDocumentTableOptions<TType>> = TableDef<ClientDocumentTableDef.SqliteDef<TName, TType>, {
|
92
122
|
isClientDocumentTable: true;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client-document-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"client-document-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
2
|
-
import { Schema
|
2
|
+
import { Schema } from '@livestore/utils/effect';
|
3
3
|
import { SessionIdSymbol } from "../../../adapter-types.js";
|
4
4
|
import { sql } from "../../../util.js";
|
5
5
|
import { defineEvent, defineMaterializer } from "../../EventDef.js";
|
@@ -38,9 +38,15 @@ export const clientDocument = ({ name, schema: valueSchema, ...inputOptions }) =
|
|
38
38
|
value: inputOptions.default.value,
|
39
39
|
},
|
40
40
|
};
|
41
|
+
// Column needs optimistic schema to read historical data formats
|
42
|
+
const optimisticColumnSchema = createOptimisticEventSchema({
|
43
|
+
valueSchema,
|
44
|
+
defaultValue: options.default.value,
|
45
|
+
partialSet: false, // Column always stores full documents
|
46
|
+
});
|
41
47
|
const columns = {
|
42
48
|
id: SqliteDsl.text({ primaryKey: true }),
|
43
|
-
value: SqliteDsl.json({ schema:
|
49
|
+
value: SqliteDsl.json({ schema: optimisticColumnSchema }),
|
44
50
|
};
|
45
51
|
const tableDef = table({ name, columns });
|
46
52
|
// @ts-expect-error TODO properly type this
|
@@ -97,12 +103,97 @@ export const mergeDefaultValues = (defaultValues, explicitDefaultValues) => {
|
|
97
103
|
return acc;
|
98
104
|
}, {});
|
99
105
|
};
|
106
|
+
/**
|
107
|
+
* Creates an optimistic schema that accepts historical event formats
|
108
|
+
* and transforms them to the current schema, preserving data and intent.
|
109
|
+
*
|
110
|
+
* Decision Matrix for Schema Changes:
|
111
|
+
*
|
112
|
+
* | Change Type | Partial Set | Full Set | Strategy |
|
113
|
+
* |---------------------|---------------------|----------------------------------|-------------------------|
|
114
|
+
* | **Compatible Changes** |
|
115
|
+
* | Add optional field | Preserve existing | Preserve existing, new field undefined | Direct decode or merge |
|
116
|
+
* | Add required field | Preserve existing | Preserve existing, new field from default | Merge with defaults |
|
117
|
+
* | **Incompatible Changes** |
|
118
|
+
* | Remove field | Drop removed field | Drop removed field, preserve others | Filter & decode |
|
119
|
+
* | Type change | Use default for field | Use default for changed field | Selective merge |
|
120
|
+
* | Rename field | Use default | Use default (can't detect rename) | Fall back to default |
|
121
|
+
* | **Edge Cases** |
|
122
|
+
* | Empty event | Return {} | Return full default | Fallback handling |
|
123
|
+
* | Invalid structure | Return {} | Return full default | Fallback handling |
|
124
|
+
*/
|
125
|
+
export const createOptimisticEventSchema = ({ valueSchema, defaultValue, partialSet, }) => {
|
126
|
+
const targetSchema = partialSet ? Schema.partial(valueSchema) : valueSchema;
|
127
|
+
return Schema.transform(Schema.Unknown, // Accept any historical event structure
|
128
|
+
targetSchema, // Output current schema
|
129
|
+
{
|
130
|
+
decode: (eventValue) => {
|
131
|
+
// Try direct decode first (for current schema events)
|
132
|
+
try {
|
133
|
+
return Schema.decodeUnknownSync(targetSchema)(eventValue);
|
134
|
+
}
|
135
|
+
catch {
|
136
|
+
// Optimistic decoding for historical events
|
137
|
+
// Handle null/undefined/non-object cases
|
138
|
+
if (typeof eventValue !== 'object' || eventValue === null) {
|
139
|
+
console.warn(`Client document: Non-object event value, using ${partialSet ? 'empty partial' : 'defaults'}`);
|
140
|
+
return partialSet ? {} : defaultValue;
|
141
|
+
}
|
142
|
+
if (partialSet) {
|
143
|
+
// For partial sets: only preserve fields that exist in new schema
|
144
|
+
const partialResult = {};
|
145
|
+
let hasValidFields = false;
|
146
|
+
for (const [key, value] of Object.entries(eventValue)) {
|
147
|
+
if (key in defaultValue) {
|
148
|
+
partialResult[key] = value;
|
149
|
+
hasValidFields = true;
|
150
|
+
}
|
151
|
+
// Drop fields that don't exist in new schema
|
152
|
+
}
|
153
|
+
if (hasValidFields) {
|
154
|
+
try {
|
155
|
+
return Schema.decodeUnknownSync(targetSchema)(partialResult);
|
156
|
+
}
|
157
|
+
catch {
|
158
|
+
// Even filtered fields don't match schema
|
159
|
+
console.warn('Client document: Partial fields incompatible, returning empty partial');
|
160
|
+
return {};
|
161
|
+
}
|
162
|
+
}
|
163
|
+
return {};
|
164
|
+
}
|
165
|
+
else {
|
166
|
+
// Full set: merge old data with new defaults
|
167
|
+
const merged = { ...defaultValue };
|
168
|
+
// Override defaults with valid fields from old event
|
169
|
+
for (const [key, value] of Object.entries(eventValue)) {
|
170
|
+
if (key in defaultValue) {
|
171
|
+
merged[key] = value;
|
172
|
+
}
|
173
|
+
// Drop fields that don't exist in new schema
|
174
|
+
}
|
175
|
+
// Try to decode the merged value
|
176
|
+
try {
|
177
|
+
return Schema.decodeUnknownSync(valueSchema)(merged);
|
178
|
+
}
|
179
|
+
catch {
|
180
|
+
// Merged value still doesn't match (e.g., type changes)
|
181
|
+
// Fall back to pure defaults
|
182
|
+
console.warn('Client document: Could not preserve event data, using defaults');
|
183
|
+
return defaultValue;
|
184
|
+
}
|
185
|
+
}
|
186
|
+
}
|
187
|
+
},
|
188
|
+
encode: (value) => value, // Pass-through for encoding
|
189
|
+
});
|
190
|
+
};
|
100
191
|
export const deriveEventAndMaterializer = ({ name, valueSchema, defaultValue, partialSet, }) => {
|
101
192
|
const derivedSetEventDef = defineEvent({
|
102
193
|
name: `${name}Set`,
|
103
194
|
schema: Schema.Struct({
|
104
195
|
id: Schema.Union(Schema.String, Schema.UniqueSymbolFromSelf(SessionIdSymbol)),
|
105
|
-
value:
|
196
|
+
value: createOptimisticEventSchema({ valueSchema, defaultValue, partialSet }),
|
106
197
|
}).annotations({ title: `${name}Set:Args` }),
|
107
198
|
clientOnly: true,
|
108
199
|
derived: true,
|
@@ -112,7 +203,7 @@ export const deriveEventAndMaterializer = ({ name, valueSchema, defaultValue, pa
|
|
112
203
|
return shouldNeverHappen(`SessionIdSymbol needs to be replaced before materializing the set event`);
|
113
204
|
}
|
114
205
|
// Override the full value if it's not an object or no partial set is allowed
|
115
|
-
const schemaProps =
|
206
|
+
const schemaProps = Schema.getResolvedPropertySignatures(valueSchema);
|
116
207
|
if (schemaProps.length === 0 || partialSet === false) {
|
117
208
|
const valueColJsonSchema = Schema.parseJson(valueSchema);
|
118
209
|
const encodedInsertValue = Schema.encodeSyncDebug(valueColJsonSchema)(value ?? defaultValue);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client-document-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"client-document-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"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"}
|
@@ -43,6 +43,7 @@ describe('client document table', () => {
|
|
43
43
|
currentFacts: new Map(),
|
44
44
|
query: {}, // unused
|
45
45
|
eventDef: Doc[ClientDocumentTableDefSymbol].derived.setEventDef,
|
46
|
+
event: {}, // unused in this test
|
46
47
|
});
|
47
48
|
};
|
48
49
|
test('string value', () => {
|
@@ -189,6 +190,21 @@ describe('client document table', () => {
|
|
189
190
|
}
|
190
191
|
`);
|
191
192
|
});
|
193
|
+
test('any value (Schema.Any) should fully replace', () => {
|
194
|
+
expect(forSchema(Schema.Any, { a: 1 }, 'id1')).toMatchInlineSnapshot(`
|
195
|
+
{
|
196
|
+
"bindValues": [
|
197
|
+
"id1",
|
198
|
+
"{"a":1}",
|
199
|
+
"{"a":1}",
|
200
|
+
],
|
201
|
+
"sql": "INSERT INTO 'test' (id, value) VALUES (?, ?) ON CONFLICT (id) DO UPDATE SET value = ?",
|
202
|
+
"writeTables": Set {
|
203
|
+
"test",
|
204
|
+
},
|
205
|
+
}
|
206
|
+
`);
|
207
|
+
});
|
192
208
|
});
|
193
209
|
});
|
194
210
|
const patchId = (muationEvent) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE3G,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAW9F,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;KAY5F,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,SAAS,GAAG,CAAI,MAA6B,EAAE,KAAQ,EAAE,EAAW,EAAE,OAAkC,EAAE,EAAE;YAChH,MAAM,GAAG,GAAG,cAAc,CAAC;gBACzB,IAAI,EAAE,MAAM;gBACZ,MAAM;gBACN,OAAO,EAAE,EAAE,KAAK,EAAE;gBAClB,GAAG,OAAO;aACX,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,eAAe,CAAA;YAE9E,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAS,CAAC,CAAC,IAAI,EAAE;gBAClD,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,KAAK,EAAE,EAAS,EAAE,SAAS;gBAC3B,QAAQ,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,WAAW;
|
1
|
+
{"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"column-annotations.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,YAAY,eAA+D,CAAA;AAExF,eAAO,MAAM,UAAU,eAA+D,CAAA;AAEtF,eAAO,MAAM,OAAO,eAA2D,CAAA;AAE/E,eAAO,MAAM,aAAa,eAAkE,CAAA;AAE5F,eAAO,MAAM,MAAM,eAA0D,CAAA;AAkB7E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,
|
1
|
+
{"version":3,"file":"column-annotations.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,YAAY,eAA+D,CAAA;AAExF,eAAO,MAAM,UAAU,eAA+D,CAAA;AAEtF,eAAO,MAAM,OAAO,eAA2D,CAAA;AAE/E,eAAO,MAAM,aAAa,eAAkE,CAAA;AAE5F,eAAO,MAAM,MAAM,eAA0D,CAAA;AAkB7E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MACjB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IAEhF,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAA;CAI5E,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MACnB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAiD,CAAA;AAElH;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE;IAExB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;IAC3D,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;CACsD,CAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { dual } from '@livestore/utils/effect';
|
1
|
+
import { dual, Option, SchemaAST } from '@livestore/utils/effect';
|
2
2
|
export const PrimaryKeyId = Symbol.for('livestore/state/sqlite/annotations/primary-key');
|
3
3
|
export const ColumnType = Symbol.for('livestore/state/sqlite/annotations/column-type');
|
4
4
|
export const Default = Symbol.for('livestore/state/sqlite/annotations/default');
|
@@ -21,30 +21,38 @@ Here are the knobs you can turn per-column when you CREATE TABLE (or ALTER TABLE
|
|
21
21
|
/**
|
22
22
|
* Adds a primary key annotation to a schema.
|
23
23
|
*/
|
24
|
-
export const withPrimaryKey = (schema) => schema
|
24
|
+
export const withPrimaryKey = (schema) => applyAnnotations(schema, { [PrimaryKeyId]: true });
|
25
25
|
/**
|
26
26
|
* Adds a column type annotation to a schema.
|
27
27
|
*/
|
28
28
|
export const withColumnType = dual(2, (schema, type) => {
|
29
29
|
validateSchemaColumnTypeCompatibility(schema, type);
|
30
|
-
return schema
|
30
|
+
return applyAnnotations(schema, { [ColumnType]: type });
|
31
31
|
});
|
32
32
|
/**
|
33
33
|
* Adds an auto-increment annotation to a schema.
|
34
34
|
*/
|
35
|
-
export const withAutoIncrement = (schema) => schema
|
35
|
+
export const withAutoIncrement = (schema) => applyAnnotations(schema, { [AutoIncrement]: true });
|
36
36
|
/**
|
37
37
|
* Adds a unique constraint annotation to a schema.
|
38
38
|
*/
|
39
|
-
export const withUnique = (schema) => schema
|
39
|
+
export const withUnique = (schema) => applyAnnotations(schema, { [Unique]: true });
|
40
40
|
/**
|
41
41
|
* Adds a default value annotation to a schema.
|
42
42
|
*/
|
43
|
-
export const withDefault = dual(2, (schema, value) => schema
|
43
|
+
export const withDefault = dual(2, (schema, value) => applyAnnotations(schema, { [Default]: value }));
|
44
44
|
/**
|
45
45
|
* Validates that a schema is compatible with the specified SQLite column type
|
46
46
|
*/
|
47
47
|
const validateSchemaColumnTypeCompatibility = (_schema, _columnType) => {
|
48
48
|
// TODO actually implement this
|
49
49
|
};
|
50
|
+
const applyAnnotations = (schema, overrides) => {
|
51
|
+
const identifier = SchemaAST.getIdentifierAnnotation(schema.ast);
|
52
|
+
const shouldPreserveIdentifier = Option.isSome(identifier) && !(SchemaAST.IdentifierAnnotationId in overrides);
|
53
|
+
const annotations = shouldPreserveIdentifier
|
54
|
+
? { ...overrides, [SchemaAST.IdentifierAnnotationId]: identifier.value }
|
55
|
+
: overrides;
|
56
|
+
return schema.annotations(annotations);
|
57
|
+
};
|
50
58
|
//# sourceMappingURL=column-annotations.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"column-annotations.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"column-annotations.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGjE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;AAE7E,8EAA8E;AAE9E;;;;;;;;;;;;EAYE;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAA8B,MAAS,EAAE,EAAE,CACvE,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAIvB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,IAA+B,EAAE,EAAE;IACtF,qCAAqC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnD,OAAO,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA8B,MAAS,EAAE,EAAE,CAC1E,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA8B,MAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAElH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAIpB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,KAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAEvH;;GAEG;AACH,MAAM,qCAAqC,GAAG,CAC5C,OAA0B,EAC1B,WAAsC,EAChC,EAAE;IACR,+BAA+B;AACjC,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAA8B,MAAS,EAAE,SAAuC,EAAK,EAAE;IAC9G,MAAM,UAAU,GAAG,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChE,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,IAAI,SAAS,CAAC,CAAA;IAC9G,MAAM,WAAW,GAAiC,wBAAwB;QACxE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE;QACxE,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAM,CAAA;AAC7C,CAAC,CAAA"}
|
@@ -2,11 +2,15 @@ import { Schema, SchemaAST } from '@livestore/utils/effect';
|
|
2
2
|
import { SqliteDsl } from './db-schema/mod.ts';
|
3
3
|
/**
|
4
4
|
* Maps a schema to a SQLite column definition, respecting column annotations.
|
5
|
+
*
|
6
|
+
* Note: When used with schema-based table definitions, optional fields (| undefined)
|
7
|
+
* are transformed to nullable fields (| null) to match SQLite's NULL semantics.
|
8
|
+
* Fields with both null and undefined will emit a warning as this is a lossy conversion.
|
5
9
|
*/
|
6
|
-
export declare const getColumnDefForSchema: (schema: Schema.Schema.AnyNoContext, propertySignature?: SchemaAST.PropertySignature) => SqliteDsl.ColumnDefinition.Any;
|
10
|
+
export declare const getColumnDefForSchema: (schema: Schema.Schema.AnyNoContext, propertySignature?: SchemaAST.PropertySignature, forceNullable?: boolean) => SqliteDsl.ColumnDefinition.Any;
|
7
11
|
/**
|
8
12
|
* Maps schema property signatures to SQLite column definitions.
|
9
|
-
*
|
13
|
+
* Optional fields (| undefined) become nullable columns (| null).
|
10
14
|
*/
|
11
15
|
export declare const schemaFieldsToColumns: (propertySignatures: ReadonlyArray<SchemaAST.PropertySignature>) => {
|
12
16
|
columns: SqliteDsl.Columns;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"column-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C
|
1
|
+
{"version":3,"file":"column-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,oBAAoB,SAAS,CAAC,iBAAiB,EAC/C,uBAAqB,KACpB,SAAS,CAAC,gBAAgB,CAAC,GA8B7B,CAAA;AAaD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,oBAAoB,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAC7D;IAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAwCvD,CAAA"}
|