@livestore/common 0.0.48-dev.0 → 0.0.48-dev.2

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.
Files changed (47) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +8 -2
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/derived-mutations.d.ts +22 -26
  5. package/dist/derived-mutations.d.ts.map +1 -1
  6. package/dist/derived-mutations.js +5 -4
  7. package/dist/derived-mutations.js.map +1 -1
  8. package/dist/schema/index.d.ts +1 -1
  9. package/dist/schema/index.d.ts.map +1 -1
  10. package/dist/schema/index.js +2 -1
  11. package/dist/schema/index.js.map +1 -1
  12. package/dist/schema/mutations.d.ts +12 -1
  13. package/dist/schema/mutations.d.ts.map +1 -1
  14. package/dist/schema/mutations.js +2 -1
  15. package/dist/schema/mutations.js.map +1 -1
  16. package/dist/schema/system-tables.d.ts +207 -232
  17. package/dist/schema/system-tables.d.ts.map +1 -1
  18. package/dist/schema/system-tables.js +1 -1
  19. package/dist/schema/system-tables.js.map +1 -1
  20. package/dist/schema/table-def.d.ts +41 -7
  21. package/dist/schema/table-def.d.ts.map +1 -1
  22. package/dist/schema/table-def.js +8 -2
  23. package/dist/schema/table-def.js.map +1 -1
  24. package/dist/schema-management/common.d.ts +8 -0
  25. package/dist/schema-management/common.d.ts.map +1 -1
  26. package/dist/schema-management/migrations.d.ts +3 -0
  27. package/dist/schema-management/migrations.d.ts.map +1 -1
  28. package/dist/schema-management/migrations.js +24 -3
  29. package/dist/schema-management/migrations.js.map +1 -1
  30. package/dist/schema-management/validate-mutation-defs.d.ts +1 -11
  31. package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -1
  32. package/dist/schema-management/validate-mutation-defs.js +0 -26
  33. package/dist/schema-management/validate-mutation-defs.js.map +1 -1
  34. package/dist/sync/sync.d.ts +4 -0
  35. package/dist/sync/sync.d.ts.map +1 -1
  36. package/dist/sync/sync.js +6 -2
  37. package/dist/sync/sync.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/derived-mutations.ts +55 -15
  40. package/src/schema/index.ts +2 -2
  41. package/src/schema/mutations.ts +13 -0
  42. package/src/schema/system-tables.ts +1 -1
  43. package/src/schema/table-def.ts +44 -8
  44. package/src/schema-management/common.ts +11 -0
  45. package/src/schema-management/migrations.ts +42 -4
  46. package/src/schema-management/validate-mutation-defs.ts +1 -49
  47. package/src/sync/sync.ts +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,12 @@ import type { InMemoryDatabase } from '../adapter-types.js';
2
2
  import type { ParamsObject } from '../util.js';
3
3
  export declare const dbExecute: (db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => void;
4
4
  export declare const dbSelect: <T>(db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => readonly T[];
5
+ export interface SchemaManager {
6
+ getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>;
7
+ setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void;
8
+ }
9
+ export type MutationDefInfo = {
10
+ mutationName: string;
11
+ schemaHash: number;
12
+ };
5
13
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,OAAQ,gBAAgB,YAAY,MAAM,eAAe,YAAY,SAU1F,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,gBAAgB,YAAY,MAAM,eAAe,YAAY,iBAQ5F,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,OAAQ,gBAAgB,YAAY,MAAM,eAAe,YAAY,SAU1F,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,gBAAgB,YAAY,MAAM,eAAe,YAAY,iBAQ5F,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,mBAAmB,EAAE,MAAM,aAAa,CAAC,eAAe,CAAC,CAAA;IAEzD,kBAAkB,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA"}
@@ -2,6 +2,8 @@ import * as otel from '@opentelemetry/api';
2
2
  import { SqliteAst } from 'effect-db-schema';
3
3
  import type { InMemoryDatabase } from '../adapter-types.js';
4
4
  import type { LiveStoreSchema } from '../schema/index.js';
5
+ import type { SchemaManager } from './common.js';
6
+ export declare const makeSchemaManager: (db: InMemoryDatabase) => SchemaManager;
5
7
  export declare const migrateDb: ({ db, otelContext, schema, }: {
6
8
  db: InMemoryDatabase;
7
9
  otelContext?: otel.Context;
@@ -15,4 +17,5 @@ export declare const migrateTable: ({ db, tableAst, schemaHash, behaviour, skipM
15
17
  behaviour: 'drop-and-recreate' | 'create-if-not-exists';
16
18
  skipMetaTable?: boolean;
17
19
  }) => void;
20
+ export declare const makeColumnSpec: (tableAst: SqliteAst.Table) => string;
18
21
  //# sourceMappingURL=migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUzD,eAAO,MAAM,SAAS,iCAInB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAA;CACxB,SAsCA,CAAA;AAED,eAAO,MAAM,YAAY,4DAOtB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,QAAQ,EAAE,UAAU,KAAK,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,SA6BA,CAAA"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,OAAQ,gBAAgB,KAAG,aA6BxD,CAAA;AAGD,eAAO,MAAM,SAAS,iCAInB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAA;CACxB,SAsCA,CAAA;AAED,eAAO,MAAM,YAAY,4DAOtB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,QAAQ,EAAE,UAAU,KAAK,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,SA6BA,CAAA;AAOD,eAAO,MAAM,cAAc,aAAc,UAAU,KAAK,WAQvD,CAAA"}
@@ -2,11 +2,32 @@ import { memoizeByStringifyArgs } from '@livestore/utils';
2
2
  import { Schema as EffectSchema } from '@livestore/utils/effect';
3
3
  import * as otel from '@opentelemetry/api';
4
4
  import { SqliteAst, SqliteDsl } from 'effect-db-schema';
5
- import { SCHEMA_META_TABLE, schemaMetaTable, systemTables } from '../schema/system-tables.js';
5
+ import { SCHEMA_META_TABLE, SCHEMA_MUTATIONS_META_TABLE, schemaMetaTable, schemaMutationsMetaTable, systemTables, } from '../schema/system-tables.js';
6
6
  import { sql } from '../util.js';
7
7
  import { dbExecute, dbSelect } from './common.js';
8
- import { makeSchemaManager, validateSchema } from './validate-mutation-defs.js';
8
+ import { validateSchema } from './validate-mutation-defs.js';
9
9
  const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString());
10
+ export const makeSchemaManager = (db) => {
11
+ migrateTable({
12
+ db,
13
+ otelContext: otel.context.active(),
14
+ tableAst: schemaMutationsMetaTable.sqliteDef.ast,
15
+ behaviour: 'create-if-not-exists',
16
+ });
17
+ return {
18
+ getMutationDefInfos: () => {
19
+ const schemaMutationsMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`);
20
+ return schemaMutationsMetaRows;
21
+ },
22
+ setMutationDefInfo: (info) => {
23
+ dbExecute(db, sql `INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`, {
24
+ mutationName: info.mutationName,
25
+ schemaHash: info.schemaHash,
26
+ updatedAt: new Date().toISOString(),
27
+ });
28
+ },
29
+ };
30
+ };
10
31
  // TODO more graceful DB migration (e.g. backup DB before destructive migrations)
11
32
  export const migrateDb = ({ db, otelContext = otel.context.active(), schema, }) => {
12
33
  migrateTable({
@@ -64,7 +85,7 @@ const createIndexFromDefinition = (tableName, index) => {
64
85
  const uniqueStr = index.unique ? 'UNIQUE' : '';
65
86
  return sql `create ${uniqueStr} index ${index.name} on ${tableName} (${index.columns.join(', ')})`;
66
87
  };
67
- const makeColumnSpec = (tableAst) => {
88
+ export const makeColumnSpec = (tableAst) => {
68
89
  const primaryKeys = tableAst.columns.filter((_) => _.primaryKey).map((_) => _.name);
69
90
  const columnDefStrs = tableAst.columns.map(toSqliteColumnSpec);
70
91
  if (primaryKeys.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,6 @@
1
- import type { InMemoryDatabase } from '../adapter-types.js';
2
1
  import type { LiveStoreSchema } from '../schema/index.js';
3
2
  import type { MutationDef } from '../schema/mutations.js';
3
+ import type { MutationDefInfo, SchemaManager } from './common.js';
4
4
  export declare const validateSchema: (schema: LiveStoreSchema, schemaManager: SchemaManager) => void;
5
5
  export declare const validateMutationDef: (mutationDef: MutationDef.Any, schemaManager: SchemaManager, registeredMutationDefInfo: MutationDefInfo | undefined) => void;
6
- interface SchemaManager {
7
- getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>;
8
- setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void;
9
- }
10
- type MutationDefInfo = {
11
- mutationName: string;
12
- schemaHash: number;
13
- };
14
- export declare const makeSchemaManager: (db: InMemoryDatabase) => SchemaManager;
15
- export {};
16
6
  //# sourceMappingURL=validate-mutation-defs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOzD,eAAO,MAAM,cAAc,WAAY,eAAe,iBAAiB,aAAa,SAqBnF,CAAA;AAED,eAAO,MAAM,mBAAmB,gBACjB,YAAY,GAAG,iBACb,aAAa,6BACD,eAAe,GAAG,SAAS,SA0BvD,CAAA;AAED,UAAU,aAAa;IACrB,mBAAmB,EAAE,MAAM,aAAa,CAAC,eAAe,CAAC,CAAA;IAEzD,kBAAkB,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/D;AAED,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,iBAAiB,OAAQ,gBAAgB,KAAG,aA6BxD,CAAA"}
1
+ {"version":3,"file":"validate-mutation-defs.d.ts","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjE,eAAO,MAAM,cAAc,WAAY,eAAe,iBAAiB,aAAa,SAqBnF,CAAA;AAED,eAAO,MAAM,mBAAmB,gBACjB,YAAY,GAAG,iBACb,aAAa,6BACD,eAAe,GAAG,SAAS,SA0BvD,CAAA"}
@@ -1,10 +1,5 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils';
2
2
  import { Schema } from '@livestore/utils/effect';
3
- import * as otel from '@opentelemetry/api';
4
- import { SCHEMA_MUTATIONS_META_TABLE, schemaMutationsMetaTable } from '../schema/system-tables.js';
5
- import { sql } from '../util.js';
6
- import { dbExecute, dbSelect } from './common.js';
7
- import { migrateTable } from './migrations.js';
8
3
  export const validateSchema = (schema, schemaManager) => {
9
4
  // Validate mutation definitions
10
5
  const registeredMutationDefInfos = schemaManager.getMutationDefInfos();
@@ -39,25 +34,4 @@ export const validateMutationDef = (mutationDef, schemaManager, registeredMutati
39
34
  mutationName: mutationDef.name,
40
35
  });
41
36
  };
42
- export const makeSchemaManager = (db) => {
43
- migrateTable({
44
- db,
45
- otelContext: otel.context.active(),
46
- tableAst: schemaMutationsMetaTable.sqliteDef.ast,
47
- behaviour: 'create-if-not-exists',
48
- });
49
- return {
50
- getMutationDefInfos: () => {
51
- const schemaMutationsMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`);
52
- return schemaMutationsMetaRows;
53
- },
54
- setMutationDefInfo: (info) => {
55
- dbExecute(db, sql `INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`, {
56
- mutationName: info.mutationName,
57
- schemaHash: info.schemaHash,
58
- updatedAt: new Date().toISOString(),
59
- });
60
- },
61
- };
62
- };
63
37
  //# sourceMappingURL=validate-mutation-defs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-mutation-defs.js","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-mutation-defs.js","sourceRoot":"","sources":["../../src/schema-management/validate-mutation-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAMhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAE,aAA4B,EAAE,EAAE;IACtF,gCAAgC;IAChC,MAAM,0BAA0B,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAA;IAEtE,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,MAAM,CAC3D,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAC7F,CAAA;IAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,iBAAiB,CACf,iCAAiC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAA;IACH,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,IAAI,CAAC,CAAA;QAEnH,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAA;IAC5E,CAAC;IAED,yBAAyB;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAA4B,EAC5B,aAA4B,EAC5B,yBAAsD,EACtD,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAElD,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAC5C,aAAa,CAAC,kBAAkB,CAAC;YAC/B,UAAU;YACV,YAAY,EAAE,WAAW,CAAC,IAAI;SAC/B,CAAC,CAAA;QAEF,OAAM;IACR,CAAC;IAED,IAAI,UAAU,KAAK,yBAAyB,CAAC,UAAU;QAAE,OAAM;IAE/D,mHAAmH;IACnH,8GAA8G;IAE9G,6CAA6C;IAC7C,oGAAoG;IACpG,IAAI;IAEJ,aAAa,CAAC,kBAAkB,CAAC;QAC/B,UAAU;QACV,YAAY,EAAE,WAAW,CAAC,IAAI;KAC/B,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -13,11 +13,15 @@ export declare class IsOfflineError extends IsOfflineError_base {
13
13
  }
14
14
  declare const InvalidPushError_base: Schema.TaggedErrorClass<InvalidPushError, "InvalidPushError", {
15
15
  readonly _tag: Schema.PropertySignature<":", "InvalidPushError", never, ":", "InvalidPushError", true, never>;
16
+ } & {
17
+ message: typeof Schema.String;
16
18
  }>;
17
19
  export declare class InvalidPushError extends InvalidPushError_base {
18
20
  }
19
21
  declare const InvalidPullError_base: Schema.TaggedErrorClass<InvalidPullError, "InvalidPullError", {
20
22
  readonly _tag: Schema.PropertySignature<":", "InvalidPullError", never, ":", "InvalidPullError", true, never>;
23
+ } & {
24
+ message: typeof Schema.String;
21
25
  }>;
22
26
  export declare class InvalidPullError extends InvalidPullError_base {
23
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEhG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAA;IAChH,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAA;IACzG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC/C,WAAW,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;CACtD,CAAA;;;;AAED,qBAAa,cAAe,SAAQ,mBAA0D;CAAG;;;;AACjG,qBAAa,gBAAiB,SAAQ,qBAA8D;CAAG;;;;AACvG,qBAAa,gBAAiB,SAAQ,qBAA8D;CAAG"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEhG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAA;IAChH,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAA;IACzG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC/C,WAAW,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;CACtD,CAAA;;;;AAED,qBAAa,cAAe,SAAQ,mBAA0D;CAAG;;;;;;AACjG,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG;;;;;;AACL,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG"}
package/dist/sync/sync.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import { Schema } from '@livestore/utils/effect';
2
2
  export class IsOfflineError extends Schema.TaggedError()('IsOfflineError', {}) {
3
3
  }
4
- export class InvalidPushError extends Schema.TaggedError()('InvalidPushError', {}) {
4
+ export class InvalidPushError extends Schema.TaggedError()('InvalidPushError', {
5
+ message: Schema.String,
6
+ }) {
5
7
  }
6
- export class InvalidPullError extends Schema.TaggedError()('InvalidPullError', {}) {
8
+ export class InvalidPullError extends Schema.TaggedError()('InvalidPullError', {
9
+ message: Schema.String,
10
+ }) {
7
11
  }
8
12
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAqC,MAAM,yBAAyB,CAAA;AAWhG,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE,EAAE,CAAC;CAAG;AACjG,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAAG;AACvG,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAAG"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAqC,MAAM,yBAAyB,CAAA;AAWhG,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE,EAAE,CAAC;CAAG;AACjG,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE;IAC/F,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AACL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE;IAC/F,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/common",
3
- "version": "0.0.48-dev.0",
3
+ "version": "0.0.48-dev.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@opentelemetry/api": "^1.9.0",
32
- "@livestore/utils": "0.0.48-dev.0",
33
- "effect-db-schema": "0.0.48-dev.0"
32
+ "@livestore/utils": "0.0.48-dev.2",
33
+ "effect-db-schema": "0.0.48-dev.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "vitest": "^1.6.0"
@@ -2,18 +2,35 @@ import type { GetValForKey } from '@livestore/utils'
2
2
  import { ReadonlyRecord, Schema } from '@livestore/utils/effect'
3
3
  import type { SqliteDsl } from 'effect-db-schema'
4
4
 
5
- import type { MutationEvent } from './schema/index.js'
6
- import { DbSchema, defineMutation } from './schema/index.js'
5
+ import type { MutationEvent } from './schema/mutations.js'
6
+ import { defineMutation } from './schema/mutations.js'
7
7
  import type { TableOptions } from './schema/table-def.js'
8
+ import * as DbSchema from './schema/table-def.js'
8
9
  import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js'
9
10
 
10
- export const makeDerivedMutationDefsForTable = <TTableDef extends DbSchema.TableDef>(table: TTableDef) => ({
11
+ export const makeDerivedMutationDefsForTable = <
12
+ TTableDef extends DbSchema.TableDef<
13
+ DbSchema.DefaultSqliteTableDefConstrained,
14
+ boolean,
15
+ DbSchema.TableOptions & { deriveMutations: { enabled: true } }
16
+ >,
17
+ >(
18
+ table: TTableDef,
19
+ ) => ({
11
20
  insert: deriveCreateMutationDef(table),
12
21
  update: deriveUpdateMutationDef(table),
13
22
  delete: deriveDeleteMutationDef(table),
14
23
  })
15
24
 
16
- export const deriveCreateMutationDef = <TTableDef extends DbSchema.TableDef>(table: TTableDef) => {
25
+ export const deriveCreateMutationDef = <
26
+ TTableDef extends DbSchema.TableDef<
27
+ DbSchema.DefaultSqliteTableDefConstrained,
28
+ boolean,
29
+ DbSchema.TableOptions & { deriveMutations: { enabled: true } }
30
+ >,
31
+ >(
32
+ table: TTableDef,
33
+ ) => {
17
34
  const tableName = table.sqliteDef.name
18
35
 
19
36
  const [optionalFields, requiredColumns] = ReadonlyRecord.partition(
@@ -25,20 +42,33 @@ export const deriveCreateMutationDef = <TTableDef extends DbSchema.TableDef>(tab
25
42
  Schema.extend(Schema.partial(Schema.Struct(ReadonlyRecord.map(optionalFields, (col) => col.schema)))),
26
43
  )
27
44
 
28
- return defineMutation(`_Derived_Create_${tableName}`, insertSchema, ({ id, ...explicitDefaultValues }) => {
29
- const defaultValues = DbSchema.getDefaultValuesDecoded(table, explicitDefaultValues)
45
+ return defineMutation(
46
+ `_Derived_Create_${tableName}`,
47
+ insertSchema,
48
+ ({ id, ...explicitDefaultValues }) => {
49
+ const defaultValues = DbSchema.getDefaultValuesDecoded(table, explicitDefaultValues)
30
50
 
31
- const [sql, bindValues] = insertRow({
32
- tableName: table.sqliteDef.name,
33
- columns: table.sqliteDef.columns,
34
- values: { ...defaultValues, id },
35
- })
51
+ const [sql, bindValues] = insertRow({
52
+ tableName: table.sqliteDef.name,
53
+ columns: table.sqliteDef.columns,
54
+ values: { ...defaultValues, id },
55
+ })
36
56
 
37
- return { sql, bindValues, writeTables: new Set([tableName]) }
38
- })
57
+ return { sql, bindValues, writeTables: new Set([tableName]) }
58
+ },
59
+ { localOnly: table.options.deriveMutations.localOnly },
60
+ )
39
61
  }
40
62
 
41
- export const deriveUpdateMutationDef = <TTableDef extends DbSchema.TableDef>(table: TTableDef) => {
63
+ export const deriveUpdateMutationDef = <
64
+ TTableDef extends DbSchema.TableDef<
65
+ DbSchema.DefaultSqliteTableDefConstrained,
66
+ boolean,
67
+ DbSchema.TableOptions & { deriveMutations: { enabled: true } }
68
+ >,
69
+ >(
70
+ table: TTableDef,
71
+ ) => {
42
72
  const tableName = table.sqliteDef.name
43
73
 
44
74
  return defineMutation(
@@ -57,10 +87,19 @@ export const deriveUpdateMutationDef = <TTableDef extends DbSchema.TableDef>(tab
57
87
 
58
88
  return { sql, bindValues, writeTables: new Set([tableName]) }
59
89
  },
90
+ { localOnly: table.options.deriveMutations.localOnly },
60
91
  )
61
92
  }
62
93
 
63
- export const deriveDeleteMutationDef = <TTableDef extends DbSchema.TableDef>(table: TTableDef) => {
94
+ export const deriveDeleteMutationDef = <
95
+ TTableDef extends DbSchema.TableDef<
96
+ DbSchema.DefaultSqliteTableDefConstrained,
97
+ boolean,
98
+ DbSchema.TableOptions & { deriveMutations: { enabled: true } }
99
+ >,
100
+ >(
101
+ table: TTableDef,
102
+ ) => {
64
103
  const tableName = table.sqliteDef.name
65
104
 
66
105
  return defineMutation(
@@ -77,6 +116,7 @@ export const deriveDeleteMutationDef = <TTableDef extends DbSchema.TableDef>(tab
77
116
 
78
117
  return { sql, bindValues, writeTables: new Set([tableName]) }
79
118
  },
119
+ { localOnly: table.options.deriveMutations.localOnly },
80
120
  )
81
121
  }
82
122
 
@@ -12,7 +12,7 @@ import {
12
12
  rawSqlMutation,
13
13
  } from './mutations.js'
14
14
  import { systemTables } from './system-tables.js'
15
- import type { TableDef } from './table-def.js'
15
+ import { type TableDef, tableHasDerivedMutations } from './table-def.js'
16
16
 
17
17
  export * from './system-tables.js'
18
18
  export * as DbSchema from './table-def.js'
@@ -84,7 +84,7 @@ export const makeSchema = <TInputSchema extends InputSchema>(
84
84
  mutations.set(rawSqlMutation.name, rawSqlMutation)
85
85
 
86
86
  for (const tableDef of tables.values()) {
87
- if (tableDef.options.deriveMutations) {
87
+ if (tableHasDerivedMutations(tableDef)) {
88
88
  const derivedMutationDefs = makeDerivedMutationDefsForTable(tableDef)
89
89
  mutations.set(derivedMutationDefs.insert.name, derivedMutationDefs.insert)
90
90
  mutations.set(derivedMutationDefs.update.name, derivedMutationDefs.update)
@@ -35,6 +35,12 @@ export type MutationDef<TName extends string, TFrom, TTo> = {
35
35
  name: TName
36
36
  schema: Schema.Schema<TTo, TFrom>
37
37
  sql: MutationDefSqlResult<TTo>
38
+ options: {
39
+ /**
40
+ * When set to true, the mutation won't be synced over the network
41
+ */
42
+ localOnly: boolean
43
+ }
38
44
 
39
45
  /** Helper function to construct mutation event */
40
46
  (args: TTo): { mutation: TName; args: TTo; id: string }
@@ -49,12 +55,19 @@ export const defineMutation = <TName extends string, TFrom, TTo>(
49
55
  name: TName,
50
56
  schema: Schema.Schema<TTo, TFrom>,
51
57
  sql: MutationDefSqlResult<TTo>,
58
+ options?: {
59
+ /**
60
+ * When set to true, the mutation won't be synced over the network
61
+ */
62
+ localOnly?: boolean
63
+ },
52
64
  ): MutationDef<TName, TFrom, TTo> => {
53
65
  const makeEvent = (args: TTo) => ({ mutation: name, args, id: cuid() })
54
66
 
55
67
  Object.defineProperty(makeEvent, 'name', { value: name })
56
68
  Object.defineProperty(makeEvent, 'schema', { value: schema })
57
69
  Object.defineProperty(makeEvent, 'sql', { value: sql })
70
+ Object.defineProperty(makeEvent, 'options', { value: { localOnly: options?.localOnly ?? false } })
58
71
 
59
72
  return makeEvent as MutationDef<TName, TFrom, TTo>
60
73
  }
@@ -40,7 +40,7 @@ export const systemTables = [schemaMetaTable, schemaMutationsMetaTable]
40
40
 
41
41
  /// Mutation log DB
42
42
 
43
- export const SyncStatus = Schema.Literal('synced', 'pending', 'error')
43
+ export const SyncStatus = Schema.Literal('synced', 'pending', 'error', 'localOnly')
44
44
  export type SyncStatus = typeof SyncStatus.Type
45
45
 
46
46
  export const MUTATION_LOG_META_TABLE = 'mutation_log'
@@ -60,9 +60,21 @@ export type TableDef<
60
60
  isSingleColumn: TIsSingleColumn
61
61
  options: TOptions
62
62
  schema: TSchema
63
- } & (TOptions['deriveMutations'] extends true ? DerivedMutationHelperFns<TSqliteDef['columns'], TOptions> : {})
64
-
65
- export type TableOptionsInput = Partial<Omit<TableOptions, 'isSingleColumn'> & { indexes: SqliteDsl.Index[] }>
63
+ } & (TOptions['deriveMutations']['enabled'] extends true
64
+ ? DerivedMutationHelperFns<TSqliteDef['columns'], TOptions>
65
+ : {})
66
+
67
+ export type TableOptionsInput = Partial<
68
+ Omit<TableOptions, 'isSingleColumn' | 'deriveMutations'> & {
69
+ indexes: SqliteDsl.Index[]
70
+ deriveMutations:
71
+ | boolean
72
+ | {
73
+ enabled: true
74
+ localOnly?: boolean
75
+ }
76
+ }
77
+ >
66
78
 
67
79
  export type TableOptions = {
68
80
  /**
@@ -89,7 +101,15 @@ export type TableOptions = {
89
101
  *
90
102
  * Important: When using this option, make sure you're following the "Rules of mutations" for the table schema.
91
103
  */
92
- deriveMutations: boolean
104
+ deriveMutations:
105
+ | { enabled: false }
106
+ | {
107
+ enabled: true
108
+ /**
109
+ * When set to true, the mutations won't be synced over the network
110
+ */
111
+ localOnly: boolean
112
+ }
93
113
  /** Derived based on whether the table definition has one or more columns (besides the `id` column) */
94
114
  isSingleColumn: boolean
95
115
  }
@@ -121,7 +141,14 @@ export const table = <
121
141
  isSingleton: options?.isSingleton ?? false,
122
142
  dynamicRegistration: options?.dynamicRegistration ?? false,
123
143
  disableAutomaticIdColumn: options?.disableAutomaticIdColumn ?? false,
124
- deriveMutations: options?.deriveMutations ?? false,
144
+ deriveMutations:
145
+ options?.deriveMutations === true
146
+ ? { enabled: true as const, localOnly: false }
147
+ : options?.deriveMutations === false
148
+ ? { enabled: false as const }
149
+ : options?.deriveMutations === undefined
150
+ ? { enabled: false as const }
151
+ : { enabled: true as const, localOnly: options.deriveMutations.localOnly ?? false },
125
152
  isSingleColumn: SqliteDsl.isColumnDefinition(columnOrColumns) === true,
126
153
  }
127
154
 
@@ -189,9 +216,9 @@ export const table = <
189
216
  export const tableHasDerivedMutations = <TTableDef extends TableDef>(
190
217
  tableDef: TTableDef,
191
218
  ): tableDef is TTableDef & {
192
- options: { deriveMutations: true }
219
+ options: { deriveMutations: { enabled: true; localOnly: boolean } }
193
220
  } & DerivedMutationHelperFns<TTableDef['sqliteDef']['columns'], TTableDef['options']> =>
194
- tableDef.options.deriveMutations === true
221
+ tableDef.options.deriveMutations.enabled === true
195
222
 
196
223
  export const tableIsSingleton = <TTableDef extends TableDef>(
197
224
  tableDef: TTableDef,
@@ -258,7 +285,16 @@ type WithDefaults<TOptionsInput extends TableOptionsInput, TIsSingleColumn exten
258
285
  isSingleton: TOptionsInput['isSingleton'] extends true ? true : false
259
286
  dynamicRegistration: TOptionsInput['dynamicRegistration'] extends true ? true : false
260
287
  disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false
261
- deriveMutations: TOptionsInput['deriveMutations'] extends true ? true : false
288
+ deriveMutations: TOptionsInput['deriveMutations'] extends true
289
+ ? { enabled: true; localOnly: boolean }
290
+ : TOptionsInput['deriveMutations'] extends false
291
+ ? { enabled: false }
292
+ : TOptionsInput['deriveMutations'] extends { enabled: true; localOnly?: boolean }
293
+ ? {
294
+ enabled: true
295
+ localOnly: TOptionsInput['deriveMutations']['localOnly'] extends true ? true : false
296
+ }
297
+ : never
262
298
  isSingleColumn: TIsSingleColumn
263
299
  }
264
300
 
@@ -27,3 +27,14 @@ export const dbSelect = <T>(db: InMemoryDatabase, queryStr: string, bindValues?:
27
27
 
28
28
  return stmt.select<T>(bindValues ? prepareBindValues(bindValues, queryStr) : undefined)
29
29
  }
30
+
31
+ export interface SchemaManager {
32
+ getMutationDefInfos: () => ReadonlyArray<MutationDefInfo>
33
+
34
+ setMutationDefInfo: (mutationDefInfo: MutationDefInfo) => void
35
+ }
36
+
37
+ export type MutationDefInfo = {
38
+ mutationName: string
39
+ schemaHash: number
40
+ }
@@ -5,14 +5,52 @@ import { SqliteAst, SqliteDsl } from 'effect-db-schema'
5
5
 
6
6
  import type { InMemoryDatabase } from '../adapter-types.js'
7
7
  import type { LiveStoreSchema } from '../schema/index.js'
8
- import type { SchemaMetaRow } from '../schema/system-tables.js'
9
- import { SCHEMA_META_TABLE, schemaMetaTable, systemTables } from '../schema/system-tables.js'
8
+ import type { SchemaMetaRow, SchemaMutationsMetaRow } from '../schema/system-tables.js'
9
+ import {
10
+ SCHEMA_META_TABLE,
11
+ SCHEMA_MUTATIONS_META_TABLE,
12
+ schemaMetaTable,
13
+ schemaMutationsMetaTable,
14
+ systemTables,
15
+ } from '../schema/system-tables.js'
10
16
  import { sql } from '../util.js'
17
+ import type { SchemaManager } from './common.js'
11
18
  import { dbExecute, dbSelect } from './common.js'
12
- import { makeSchemaManager, validateSchema } from './validate-mutation-defs.js'
19
+ import { validateSchema } from './validate-mutation-defs.js'
13
20
 
14
21
  const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString())
15
22
 
23
+ export const makeSchemaManager = (db: InMemoryDatabase): SchemaManager => {
24
+ migrateTable({
25
+ db,
26
+ otelContext: otel.context.active(),
27
+ tableAst: schemaMutationsMetaTable.sqliteDef.ast,
28
+ behaviour: 'create-if-not-exists',
29
+ })
30
+
31
+ return {
32
+ getMutationDefInfos: () => {
33
+ const schemaMutationsMetaRows = dbSelect<SchemaMutationsMetaRow>(
34
+ db,
35
+ sql`SELECT * FROM ${SCHEMA_MUTATIONS_META_TABLE}`,
36
+ )
37
+
38
+ return schemaMutationsMetaRows
39
+ },
40
+ setMutationDefInfo: (info) => {
41
+ dbExecute(
42
+ db,
43
+ sql`INSERT OR REPLACE INTO ${SCHEMA_MUTATIONS_META_TABLE} (mutationName, schemaHash, updatedAt) VALUES ($mutationName, $schemaHash, $updatedAt)`,
44
+ {
45
+ mutationName: info.mutationName,
46
+ schemaHash: info.schemaHash,
47
+ updatedAt: new Date().toISOString(),
48
+ },
49
+ )
50
+ },
51
+ }
52
+ }
53
+
16
54
  // TODO more graceful DB migration (e.g. backup DB before destructive migrations)
17
55
  export const migrateDb = ({
18
56
  db,
@@ -112,7 +150,7 @@ const createIndexFromDefinition = (tableName: string, index: SqliteAst.Index) =>
112
150
  return sql`create ${uniqueStr} index ${index.name} on ${tableName} (${index.columns.join(', ')})`
113
151
  }
114
152
 
115
- const makeColumnSpec = (tableAst: SqliteAst.Table) => {
153
+ export const makeColumnSpec = (tableAst: SqliteAst.Table) => {
116
154
  const primaryKeys = tableAst.columns.filter((_) => _.primaryKey).map((_) => _.name)
117
155
  const columnDefStrs = tableAst.columns.map(toSqliteColumnSpec)
118
156
  if (primaryKeys.length > 0) {