@livestore/common 0.0.0-snapshot-3ea7644e665c5c8292d2309fb7f837b9146af912 → 0.0.0-snapshot-ba25981b6de87a90976fc39e1c2551844d384a05
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 +34 -46
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/adapter-types.d.ts +1 -1
- package/dist/adapter-types.js +1 -1
- package/dist/derived-mutations.d.ts +4 -4
- package/dist/derived-mutations.d.ts.map +1 -1
- package/dist/derived-mutations.js.map +1 -1
- package/dist/devtools/devtools-messages.d.ts +45 -45
- package/dist/devtools/devtools-messages.js +1 -1
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/mutation.d.ts +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +1 -6
- package/dist/mutation.js.map +1 -1
- package/dist/query-info.d.ts +39 -29
- package/dist/query-info.d.ts.map +1 -1
- package/dist/query-info.js +35 -4
- package/dist/query-info.js.map +1 -1
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +0 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/schema-helpers.d.ts +2 -2
- package/dist/schema/schema-helpers.d.ts.map +1 -1
- package/dist/schema/system-tables.d.ts +204 -246
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/table-def.d.ts +24 -45
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +1 -10
- package/dist/schema/table-def.js.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 +3 -3
- package/src/adapter-types.ts +1 -1
- package/src/derived-mutations.ts +8 -4
- package/src/devtools/devtools-messages.ts +1 -1
- package/src/index.ts +0 -1
- package/src/mutation.ts +2 -9
- package/src/query-info.ts +93 -66
- package/src/schema/index.ts +2 -4
- package/src/schema/schema-helpers.ts +2 -2
- package/src/schema/table-def.ts +68 -99
- package/src/version.ts +1 -1
- package/dist/query-builder/api.d.ts +0 -190
- package/dist/query-builder/api.d.ts.map +0 -1
- package/dist/query-builder/api.js +0 -8
- package/dist/query-builder/api.js.map +0 -1
- package/dist/query-builder/impl.d.ts +0 -12
- package/dist/query-builder/impl.d.ts.map +0 -1
- package/dist/query-builder/impl.js +0 -226
- package/dist/query-builder/impl.js.map +0 -1
- package/dist/query-builder/impl.test.d.ts +0 -2
- package/dist/query-builder/impl.test.d.ts.map +0 -1
- package/dist/query-builder/impl.test.js +0 -183
- package/dist/query-builder/impl.test.js.map +0 -1
- package/dist/query-builder/mod.d.ts +0 -10
- package/dist/query-builder/mod.d.ts.map +0 -1
- package/dist/query-builder/mod.js +0 -10
- package/dist/query-builder/mod.js.map +0 -1
- package/src/query-builder/api.ts +0 -288
- package/src/query-builder/impl.test.ts +0 -205
- package/src/query-builder/impl.ts +0 -268
- package/src/query-builder/mod.ts +0 -10
|
@@ -2,40 +2,28 @@ import type { Nullable, PrettifyFlat } from '@livestore/db-schema';
|
|
|
2
2
|
import { SqliteDsl } from '@livestore/db-schema';
|
|
3
3
|
import { Schema } from '@livestore/utils/effect';
|
|
4
4
|
import type { DerivedMutationHelperFns } from '../derived-mutations.js';
|
|
5
|
-
import type { QueryBuilder } from '../query-builder/mod.js';
|
|
6
5
|
export declare const blob: SqliteDsl.ColDefFn<"blob">, boolean: SqliteDsl.SpecializedColDefFn<"integer", false, boolean>, column: <TColumnType extends SqliteDsl.FieldColumnType>(columnType: TColumnType) => SqliteDsl.ColDefFn<TColumnType>, datetime: SqliteDsl.SpecializedColDefFn<"text", false, Date>, integer: SqliteDsl.ColDefFn<"integer">, isColumnDefinition: (value: unknown) => value is SqliteDsl.ColumnDefinition<any, any>, json: SqliteDsl.SpecializedColDefFn<"text", true, unknown>, real: SqliteDsl.ColDefFn<"real">, text: SqliteDsl.ColDefFn<"text">;
|
|
7
|
-
export { SqliteDsl } from '@livestore/db-schema';
|
|
6
|
+
export { type SqliteDsl } from '@livestore/db-schema';
|
|
8
7
|
export type StateType = 'singleton' | 'dynamic';
|
|
9
8
|
export type DefaultSqliteTableDef = SqliteDsl.TableDefinition<string, SqliteDsl.Columns>;
|
|
10
9
|
export type DefaultSqliteTableDefConstrained = SqliteDsl.TableDefinition<string, SqliteDsl.ConstraintColumns>;
|
|
11
|
-
export type
|
|
12
|
-
|
|
13
|
-
options: TOptions;
|
|
14
|
-
schema: TSchema;
|
|
15
|
-
};
|
|
16
|
-
export type TableDef<TSqliteDef extends DefaultSqliteTableDef = DefaultSqliteTableDefConstrained, TOptions extends TableOptions = TableOptions, TSchema = Schema.Schema<SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
17
|
-
readonly [K in keyof TSqliteDef['columns']]: TSqliteDef['columns'][K]['schema']['Type'];
|
|
10
|
+
export type TableDef<TSqliteDef extends DefaultSqliteTableDef = DefaultSqliteTableDefConstrained, TIsSingleColumn extends boolean = boolean, TOptions extends TableOptions = TableOptions, TSchema = Schema.Schema<SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
11
|
+
readonly [K in keyof TSqliteDef['columns']]: Schema.Schema.Type<TSqliteDef['columns'][K]['schema']>;
|
|
18
12
|
}>, SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
19
|
-
readonly [K in keyof TSqliteDef['columns']]: TSqliteDef['columns'][K]['schema']
|
|
13
|
+
readonly [K in keyof TSqliteDef['columns']]: Schema.Schema.Encoded<TSqliteDef['columns'][K]['schema']>;
|
|
20
14
|
}>>> = {
|
|
21
15
|
sqliteDef: TSqliteDef;
|
|
16
|
+
isSingleColumn: TIsSingleColumn;
|
|
22
17
|
options: TOptions;
|
|
23
18
|
schema: TSchema;
|
|
24
|
-
query: QueryBuilder<ReadonlyArray<Schema.Schema.Type<TSchema>>, TableDef<TSqliteDef & {}, TOptions>>;
|
|
25
19
|
} & (TOptions['deriveMutations']['enabled'] extends true ? DerivedMutationHelperFns<TSqliteDef['columns'], TOptions> : {});
|
|
26
|
-
export type TableOptionsInput = Partial<{
|
|
20
|
+
export type TableOptionsInput = Partial<Omit<TableOptions, 'isSingleColumn' | 'deriveMutations'> & {
|
|
27
21
|
indexes: SqliteDsl.Index[];
|
|
28
|
-
disableAutomaticIdColumn: boolean;
|
|
29
|
-
isSingleton: boolean;
|
|
30
22
|
deriveMutations: boolean | {
|
|
31
23
|
enabled: true;
|
|
32
24
|
localOnly?: boolean;
|
|
33
25
|
};
|
|
34
26
|
}>;
|
|
35
|
-
type ToColumns<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>> = TColumns extends SqliteDsl.Columns ? TColumns : TColumns extends SqliteDsl.ColumnDefinition<any, any> ? {
|
|
36
|
-
value: TColumns;
|
|
37
|
-
} : never;
|
|
38
|
-
type ValidateTableOptionsInput<TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>, TOptionsInput extends TableOptionsInput, TPassthroughIfValid> = SqliteDsl.FromColumns.RequiresInsertValues<ToColumns<TColumns>> extends true ? TOptionsInput['isSingleton'] extends true ? 'Error: To use `isSingleton: true` with this table, each column must have a default value or be nullable' : TPassthroughIfValid : TPassthroughIfValid;
|
|
39
27
|
export type TableOptions = {
|
|
40
28
|
/**
|
|
41
29
|
* Setting this to true will have the following consequences:
|
|
@@ -45,8 +33,8 @@ export type TableOptions = {
|
|
|
45
33
|
*
|
|
46
34
|
* @default false
|
|
47
35
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
isSingleton: boolean;
|
|
37
|
+
disableAutomaticIdColumn: boolean;
|
|
50
38
|
/**
|
|
51
39
|
* Setting this to true will automatically derive insert, update and delete mutations for this table. Example:
|
|
52
40
|
*
|
|
@@ -59,7 +47,7 @@ export type TableOptions = {
|
|
|
59
47
|
*
|
|
60
48
|
* Important: When using this option, make sure you're following the "Rules of mutations" for the table schema.
|
|
61
49
|
*/
|
|
62
|
-
|
|
50
|
+
deriveMutations: {
|
|
63
51
|
enabled: false;
|
|
64
52
|
} | {
|
|
65
53
|
enabled: true;
|
|
@@ -69,25 +57,18 @@ export type TableOptions = {
|
|
|
69
57
|
localOnly: boolean;
|
|
70
58
|
};
|
|
71
59
|
/** Derived based on whether the table definition has one or more columns (besides the `id` column) */
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Derived based on whether the table definition has one or more columns (besides the `id` column) that require
|
|
75
|
-
* insert values (i.e. are not nullable and don't have a default value)
|
|
76
|
-
*
|
|
77
|
-
* `isSingleton` tables always imply `requiresInsertValues: false`
|
|
78
|
-
*/
|
|
79
|
-
readonly requiredInsertColumnNames: string;
|
|
60
|
+
isSingleColumn: boolean;
|
|
80
61
|
};
|
|
81
|
-
export declare const table: <TName extends string, TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>, TOptionsInput extends TableOptionsInput = Partial<{
|
|
62
|
+
export declare const table: <TName extends string, TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>, const TOptionsInput extends TableOptionsInput = Partial<Omit<TableOptions, "deriveMutations" | "isSingleColumn"> & {
|
|
82
63
|
indexes: SqliteDsl.Index[];
|
|
83
|
-
disableAutomaticIdColumn: boolean;
|
|
84
|
-
isSingleton: boolean;
|
|
85
64
|
deriveMutations: boolean | {
|
|
86
65
|
enabled: true;
|
|
87
66
|
localOnly?: boolean;
|
|
88
67
|
};
|
|
89
|
-
}>>(name: TName, columnOrColumns: TColumns, options?: TOptionsInput) =>
|
|
90
|
-
|
|
68
|
+
}>>(name: TName, columnOrColumns: TColumns, options?: TOptionsInput) => TableDef<SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
69
|
+
value: TColumns;
|
|
70
|
+
}, WithDefaults<TOptionsInput, SqliteDsl.IsSingleColumn<TColumns>>>>>, SqliteDsl.IsSingleColumn<TColumns>, WithDefaults<TOptionsInput, SqliteDsl.IsSingleColumn<TColumns>>>;
|
|
71
|
+
export declare const tableHasDerivedMutations: <TTableDef extends TableDef>(tableDef: TTableDef) => tableDef is TTableDef & {
|
|
91
72
|
options: {
|
|
92
73
|
deriveMutations: {
|
|
93
74
|
enabled: true;
|
|
@@ -95,18 +76,17 @@ export declare const tableHasDerivedMutations: <TTableDef extends TableDefBase>(
|
|
|
95
76
|
};
|
|
96
77
|
};
|
|
97
78
|
} & DerivedMutationHelperFns<TTableDef["sqliteDef"]["columns"], TTableDef["options"]>;
|
|
98
|
-
export declare const tableIsSingleton: <TTableDef extends
|
|
79
|
+
export declare const tableIsSingleton: <TTableDef extends TableDef>(tableDef: TTableDef) => tableDef is TTableDef & {
|
|
99
80
|
options: {
|
|
100
81
|
isSingleton: true;
|
|
101
82
|
};
|
|
102
83
|
};
|
|
103
|
-
type SqliteTableDefForInput<TName extends string, TColumns extends SqliteDsl.Columns | SqliteDsl.ColumnDefinition<any, any>, TOptions extends TableOptions> = SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<ToColumns<TColumns>, TOptions>>>;
|
|
104
84
|
type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns & ('id' extends keyof TColumns ? {} : TOptions['disableAutomaticIdColumn'] extends true ? {} : TOptions['isSingleton'] extends true ? {
|
|
105
85
|
id: SqliteDsl.ColumnDefinition<'singleton', 'singleton'>;
|
|
106
86
|
} : {
|
|
107
87
|
id: SqliteDsl.ColumnDefinition<string, string>;
|
|
108
88
|
});
|
|
109
|
-
type WithDefaults<TOptionsInput extends TableOptionsInput,
|
|
89
|
+
type WithDefaults<TOptionsInput extends TableOptionsInput, TIsSingleColumn extends boolean> = {
|
|
110
90
|
isSingleton: TOptionsInput['isSingleton'] extends true ? true : false;
|
|
111
91
|
disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false;
|
|
112
92
|
deriveMutations: TOptionsInput['deriveMutations'] extends true ? {
|
|
@@ -121,20 +101,19 @@ type WithDefaults<TOptionsInput extends TableOptionsInput, TColumns extends Sqli
|
|
|
121
101
|
enabled: true;
|
|
122
102
|
localOnly: TOptionsInput['deriveMutations']['localOnly'] extends true ? true : false;
|
|
123
103
|
} : never;
|
|
124
|
-
isSingleColumn:
|
|
125
|
-
requiredInsertColumnNames: SqliteDsl.FromColumns.RequiredInsertColumnNames<ToColumns<TColumns>>;
|
|
104
|
+
isSingleColumn: TIsSingleColumn;
|
|
126
105
|
};
|
|
127
106
|
export declare namespace FromTable {
|
|
128
|
-
type RowDecoded<TTableDef extends
|
|
129
|
-
type NullableColumnNames<TTableDef extends
|
|
130
|
-
type Columns<TTableDef extends
|
|
107
|
+
type RowDecoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
108
|
+
type NullableColumnNames<TTableDef extends TableDef> = FromColumns.NullableColumnNames<TTableDef['sqliteDef']['columns']>;
|
|
109
|
+
type Columns<TTableDef extends TableDef> = {
|
|
131
110
|
[K in keyof TTableDef['sqliteDef']['columns']]: TTableDef['sqliteDef']['columns'][K]['columnType'];
|
|
132
111
|
};
|
|
133
|
-
type RowEncodeNonNullable<TTableDef extends
|
|
112
|
+
type RowEncodeNonNullable<TTableDef extends TableDef> = {
|
|
134
113
|
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.Encoded<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
135
114
|
};
|
|
136
|
-
type RowEncoded<TTableDef extends
|
|
137
|
-
type RowDecodedAll<TTableDef extends
|
|
115
|
+
type RowEncoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
116
|
+
type RowDecodedAll<TTableDef extends TableDef> = {
|
|
138
117
|
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.Type<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
139
118
|
};
|
|
140
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,OAAO,EAAkB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/table-def.js
CHANGED
|
@@ -2,9 +2,7 @@ import { SqliteDsl } from '@livestore/db-schema';
|
|
|
2
2
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
3
3
|
import { ReadonlyRecord, Schema } from '@livestore/utils/effect';
|
|
4
4
|
import { makeDerivedMutationDefsForTable } from '../derived-mutations.js';
|
|
5
|
-
import { makeQueryBuilder } from '../query-builder/mod.js';
|
|
6
5
|
export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl;
|
|
7
|
-
export { SqliteDsl } from '@livestore/db-schema';
|
|
8
6
|
export const table = (name, columnOrColumns, options) => {
|
|
9
7
|
const tablePath = name;
|
|
10
8
|
const options_ = {
|
|
@@ -18,7 +16,6 @@ export const table = (name, columnOrColumns, options) => {
|
|
|
18
16
|
? { enabled: false }
|
|
19
17
|
: { enabled: true, localOnly: options.deriveMutations.localOnly ?? false },
|
|
20
18
|
isSingleColumn: SqliteDsl.isColumnDefinition(columnOrColumns) === true,
|
|
21
|
-
requiredInsertColumnNames: 'type-level-only',
|
|
22
19
|
};
|
|
23
20
|
const columns = (SqliteDsl.isColumnDefinition(columnOrColumns) ? { value: columnOrColumns } : columnOrColumns);
|
|
24
21
|
if (options_.disableAutomaticIdColumn === true) {
|
|
@@ -45,13 +42,7 @@ export const table = (name, columnOrColumns, options) => {
|
|
|
45
42
|
}
|
|
46
43
|
const isSingleColumn = SqliteDsl.isColumnDefinition(columnOrColumns) === true;
|
|
47
44
|
const schema = SqliteDsl.structSchemaForTable(sqliteDef);
|
|
48
|
-
const tableDef = { sqliteDef, options: options_, schema };
|
|
49
|
-
const query = makeQueryBuilder(tableDef);
|
|
50
|
-
// const tableDef = { ...tableDefBase, query } satisfies TableDef
|
|
51
|
-
// NOTE we're currently patching the existing tableDef object
|
|
52
|
-
// as it's being used as part of the query builder API
|
|
53
|
-
// @ts-expect-error TODO properly implement this
|
|
54
|
-
tableDef.query = query;
|
|
45
|
+
const tableDef = { sqliteDef, isSingleColumn, options: options_, schema };
|
|
55
46
|
if (tableHasDerivedMutations(tableDef)) {
|
|
56
47
|
const derivedMutationDefs = makeDerivedMutationDefsForTable(tableDef);
|
|
57
48
|
tableDef.insert = (valuesOrValue) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AAEzE,
|
|
1
|
+
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const liveStoreVersion: "0.
|
|
1
|
+
export declare const liveStoreVersion: "0.1.0";
|
|
2
2
|
/**
|
|
3
3
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
|
4
4
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,SAAmB,CAAA;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA"}
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// TODO bring back when Expo and Playwright supports `with` imports
|
|
2
2
|
// import packageJson from '../package.json' with { type: 'json' }
|
|
3
3
|
// export const liveStoreVersion = packageJson.version
|
|
4
|
-
export const liveStoreVersion = '0.
|
|
4
|
+
export const liveStoreVersion = '0.1.0';
|
|
5
5
|
/**
|
|
6
6
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
|
7
7
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,kEAAkE;AAClE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,kEAAkE;AAClE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAA;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/common",
|
|
3
|
-
"version": "0.0.0-snapshot-
|
|
3
|
+
"version": "0.0.0-snapshot-ba25981b6de87a90976fc39e1c2551844d384a05",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"graphology": "0.26.0-alpha1",
|
|
47
47
|
"graphology-dag": "0.4.1",
|
|
48
48
|
"graphology-types": "0.24.7",
|
|
49
|
-
"@livestore/utils": "0.0.0-snapshot-
|
|
50
|
-
"@livestore/db-schema": "0.0.0-snapshot-
|
|
49
|
+
"@livestore/utils": "0.0.0-snapshot-ba25981b6de87a90976fc39e1c2551844d384a05",
|
|
50
|
+
"@livestore/db-schema": "0.0.0-snapshot-ba25981b6de87a90976fc39e1c2551844d384a05"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"vitest": "^2.1.4"
|
package/src/adapter-types.ts
CHANGED
|
@@ -89,7 +89,7 @@ export type Coordinator = {
|
|
|
89
89
|
*
|
|
90
90
|
* Example:
|
|
91
91
|
* ```ts
|
|
92
|
-
* const query$ =
|
|
92
|
+
* const query$ = rowQuery(tables.app, SessionIdSymbol)
|
|
93
93
|
* ```
|
|
94
94
|
*/
|
|
95
95
|
export const SessionIdSymbol = Symbol.for('@livestore/session-id')
|
package/src/derived-mutations.ts
CHANGED
|
@@ -9,8 +9,9 @@ import type * as DbSchema from './schema/table-def.js'
|
|
|
9
9
|
import { deleteRows, insertRow, updateRows } from './sql-queries/sql-queries.js'
|
|
10
10
|
|
|
11
11
|
export const makeDerivedMutationDefsForTable = <
|
|
12
|
-
TTableDef extends DbSchema.
|
|
12
|
+
TTableDef extends DbSchema.TableDef<
|
|
13
13
|
DbSchema.DefaultSqliteTableDefConstrained,
|
|
14
|
+
boolean,
|
|
14
15
|
DbSchema.TableOptions & { deriveMutations: { enabled: true } }
|
|
15
16
|
>,
|
|
16
17
|
>(
|
|
@@ -22,8 +23,9 @@ export const makeDerivedMutationDefsForTable = <
|
|
|
22
23
|
})
|
|
23
24
|
|
|
24
25
|
export const deriveCreateMutationDef = <
|
|
25
|
-
TTableDef extends DbSchema.
|
|
26
|
+
TTableDef extends DbSchema.TableDef<
|
|
26
27
|
DbSchema.DefaultSqliteTableDefConstrained,
|
|
28
|
+
boolean,
|
|
27
29
|
DbSchema.TableOptions & { deriveMutations: { enabled: true } }
|
|
28
30
|
>,
|
|
29
31
|
>(
|
|
@@ -59,8 +61,9 @@ export const deriveCreateMutationDef = <
|
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
export const deriveUpdateMutationDef = <
|
|
62
|
-
TTableDef extends DbSchema.
|
|
64
|
+
TTableDef extends DbSchema.TableDef<
|
|
63
65
|
DbSchema.DefaultSqliteTableDefConstrained,
|
|
66
|
+
boolean,
|
|
64
67
|
DbSchema.TableOptions & { deriveMutations: { enabled: true } }
|
|
65
68
|
>,
|
|
66
69
|
>(
|
|
@@ -89,8 +92,9 @@ export const deriveUpdateMutationDef = <
|
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
export const deriveDeleteMutationDef = <
|
|
92
|
-
TTableDef extends DbSchema.
|
|
95
|
+
TTableDef extends DbSchema.TableDef<
|
|
93
96
|
DbSchema.DefaultSqliteTableDefConstrained,
|
|
97
|
+
boolean,
|
|
94
98
|
DbSchema.TableOptions & { deriveMutations: { enabled: true } }
|
|
95
99
|
>,
|
|
96
100
|
>(
|
|
@@ -101,7 +101,7 @@ export class LiveQueriesSubscribe extends LSDReqResMessage('LSD.LiveQueriesSubsc
|
|
|
101
101
|
export class LiveQueriesUnsubscribe extends LSDReqResMessage('LSD.LiveQueriesUnsubscribe', {}) {}
|
|
102
102
|
|
|
103
103
|
export class SerializedLiveQuery extends Schema.Struct({
|
|
104
|
-
_tag: Schema.Literal('computed', '
|
|
104
|
+
_tag: Schema.Literal('computed', 'sql', 'graphql'),
|
|
105
105
|
id: Schema.Number,
|
|
106
106
|
label: Schema.String,
|
|
107
107
|
runs: Schema.Number,
|
package/src/index.ts
CHANGED
package/src/mutation.ts
CHANGED
|
@@ -71,21 +71,14 @@ export const makeShouldExcludeMutationFromLog = memoizeByRef((schema: LiveStoreS
|
|
|
71
71
|
|
|
72
72
|
// NOTE we should explore whether there is a more elegant solution
|
|
73
73
|
// e.g. by leveraging the schema to replace the sessionIdSymbol
|
|
74
|
-
export const replaceSessionIdSymbol = (
|
|
75
|
-
bindValues: Record<string, unknown> | ReadonlyArray<unknown>,
|
|
76
|
-
sessionId: string,
|
|
77
|
-
) => {
|
|
74
|
+
export const replaceSessionIdSymbol = (bindValues: Record<string, unknown>, sessionId: string) => {
|
|
78
75
|
deepReplaceValue(bindValues, SessionIdSymbol, sessionId)
|
|
79
76
|
}
|
|
80
77
|
|
|
81
78
|
const deepReplaceValue = <S, R>(input: any, searchValue: S, replaceValue: R): void => {
|
|
82
79
|
if (Array.isArray(input)) {
|
|
83
80
|
for (const i in input) {
|
|
84
|
-
|
|
85
|
-
input[i] = replaceValue
|
|
86
|
-
} else {
|
|
87
|
-
deepReplaceValue(input[i], searchValue, replaceValue)
|
|
88
|
-
}
|
|
81
|
+
deepReplaceValue(input[i], searchValue, replaceValue)
|
|
89
82
|
}
|
|
90
83
|
} else if (typeof input === 'object' && input !== null) {
|
|
91
84
|
for (const key in input) {
|
package/src/query-info.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Schema } from '@livestore/utils/effect'
|
|
2
|
+
|
|
1
3
|
import type { SessionIdSymbol } from './adapter-types.js'
|
|
2
4
|
import type { DbSchema } from './schema/index.js'
|
|
3
5
|
|
|
@@ -6,73 +8,98 @@ import type { DbSchema } from './schema/index.js'
|
|
|
6
8
|
* - a whole row
|
|
7
9
|
* - a single column value
|
|
8
10
|
* - a sub value in a JSON column
|
|
9
|
-
*
|
|
10
|
-
* This information is currently only used for derived mutations.
|
|
11
11
|
*/
|
|
12
|
-
export type QueryInfo
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// }
|
|
54
|
-
|
|
55
|
-
// export type Col<TTableDef extends DbSchema.TableDefBase, TColName extends keyof TTableDef['sqliteDef']['columns']> = {
|
|
56
|
-
// _tag: 'Col'
|
|
57
|
-
// table: TTableDef
|
|
58
|
-
// id: string | SessionIdSymbol
|
|
59
|
-
// column: TColName
|
|
60
|
-
// }
|
|
61
|
-
|
|
62
|
-
// export type ColJsonValue<TTableDef extends DbSchema.TableDefBase, TColName extends GetJsonColumn<TTableDef>> = {
|
|
63
|
-
// _tag: 'ColJsonValue'
|
|
64
|
-
// table: TTableDef
|
|
65
|
-
// id: string | SessionIdSymbol
|
|
66
|
-
// column: TColName
|
|
67
|
-
// /**
|
|
68
|
-
// * example: `$.tabs[3].items[2]` (`$` referring to the column value)
|
|
69
|
-
// */
|
|
70
|
-
// jsonPath: string
|
|
71
|
-
// }
|
|
12
|
+
export type QueryInfo<TTableDef extends DbSchema.TableDef = DbSchema.TableDef> =
|
|
13
|
+
| QueryInfoNone
|
|
14
|
+
| QueryInfoRow<TTableDef>
|
|
15
|
+
| QueryInfoColJsonValue<TTableDef, GetJsonColumn<TTableDef>>
|
|
16
|
+
| QueryInfoCol<TTableDef, keyof TTableDef['sqliteDef']['columns']>
|
|
17
|
+
|
|
18
|
+
export type QueryInfoNone = {
|
|
19
|
+
_tag: 'None'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type QueryInfoRow<TTableDef extends DbSchema.TableDef> = {
|
|
23
|
+
_tag: 'Row'
|
|
24
|
+
table: TTableDef
|
|
25
|
+
id: string | SessionIdSymbol
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type QueryInfoCol<
|
|
29
|
+
TTableDef extends DbSchema.TableDef,
|
|
30
|
+
TColName extends keyof TTableDef['sqliteDef']['columns'],
|
|
31
|
+
> = {
|
|
32
|
+
_tag: 'Col'
|
|
33
|
+
table: TTableDef
|
|
34
|
+
id: string | SessionIdSymbol
|
|
35
|
+
column: TColName
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type QueryInfoColJsonValue<TTableDef extends DbSchema.TableDef, TColName extends GetJsonColumn<TTableDef>> = {
|
|
39
|
+
_tag: 'ColJsonValue'
|
|
40
|
+
table: TTableDef
|
|
41
|
+
id: string | SessionIdSymbol
|
|
42
|
+
column: TColName
|
|
43
|
+
/**
|
|
44
|
+
* example: `$.tabs[3].items[2]` (`$` referring to the column value)
|
|
45
|
+
*/
|
|
46
|
+
jsonPath: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
type GetJsonColumn<TTableDef extends DbSchema.TableDef> = keyof {
|
|
50
|
+
[ColName in keyof TTableDef['sqliteDef']['columns'] as TTableDef['sqliteDef']['columns'][ColName]['columnType'] extends 'text'
|
|
51
|
+
? ColName
|
|
52
|
+
: never]: {}
|
|
72
53
|
}
|
|
73
54
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
55
|
+
export type UpdateValueForPath<TQueryInfo extends QueryInfo> = TQueryInfo extends { _tag: 'Row' }
|
|
56
|
+
? Partial<DbSchema.FromTable.RowDecodedAll<TQueryInfo['table']>>
|
|
57
|
+
: TQueryInfo extends { _tag: 'Col' }
|
|
58
|
+
? Schema.Schema.Type<TQueryInfo['table']['sqliteDef']['columns'][TQueryInfo['column']]['schema']>
|
|
59
|
+
: TQueryInfo extends { _tag: 'ColJsonValue' }
|
|
60
|
+
? { TODO: true }
|
|
61
|
+
: never
|
|
62
|
+
|
|
63
|
+
// export const mutationForQueryInfo = <const TQueryInfo extends QueryInfo>(
|
|
64
|
+
// queryInfo: TQueryInfo,
|
|
65
|
+
// value: UpdateValueForPath<TQueryInfo>,
|
|
66
|
+
// ): RawSqlMutationEvent => {
|
|
67
|
+
// if (queryInfo._tag === 'ColJsonValue' || queryInfo._tag === 'None') {
|
|
68
|
+
// return notYetImplemented('TODO')
|
|
69
|
+
// }
|
|
70
|
+
|
|
71
|
+
// const sqliteTableDef = queryInfo.table.sqliteDef
|
|
72
|
+
// const id = queryInfo.id
|
|
73
|
+
|
|
74
|
+
// const { columnNames, bindValues } = (() => {
|
|
75
|
+
// if (queryInfo._tag === 'Row') {
|
|
76
|
+
// const columnNames = Object.keys(value)
|
|
77
|
+
|
|
78
|
+
// const partialStructSchema = queryInfo.table.schema.pipe(Schema.pick(...columnNames))
|
|
79
|
+
|
|
80
|
+
// // const columnNames = Object.keys(value)
|
|
81
|
+
// const encodedBindValues = Schema.encodeEither(partialStructSchema)(value)
|
|
82
|
+
// if (encodedBindValues._tag === 'Left') {
|
|
83
|
+
// return shouldNeverHappen(encodedBindValues.left.toString())
|
|
84
|
+
// } else {
|
|
85
|
+
// return { columnNames, bindValues: encodedBindValues.right }
|
|
86
|
+
// }
|
|
87
|
+
// } else if (queryInfo._tag === 'Col') {
|
|
88
|
+
// const columnName = queryInfo.column
|
|
89
|
+
// const columnSchema =
|
|
90
|
+
// sqliteTableDef.columns[columnName]?.schema ?? shouldNeverHappen(`Column ${columnName} not found`)
|
|
91
|
+
// const bindValues = { [columnName]: Schema.encodeSync(columnSchema)(value) }
|
|
92
|
+
// return { columnNames: [columnName], bindValues }
|
|
93
|
+
// } else {
|
|
94
|
+
// return shouldNeverHappen()
|
|
95
|
+
// }
|
|
96
|
+
// })()
|
|
97
|
+
|
|
98
|
+
// const updateClause = columnNames.map((columnName) => `${columnName} = $${columnName}`).join(', ')
|
|
99
|
+
|
|
100
|
+
// const whereClause = `where id = '${id}'`
|
|
101
|
+
// const sql = `UPDATE ${sqliteTableDef.name} SET ${updateClause} ${whereClause}`
|
|
102
|
+
// const writeTables = new Set<string>([queryInfo.table.sqliteDef.name])
|
|
103
|
+
|
|
104
|
+
// return rawSqlMutation({ sql, bindValues, writeTables })
|
|
78
105
|
// }
|
package/src/schema/index.ts
CHANGED
|
@@ -12,8 +12,7 @@ import {
|
|
|
12
12
|
rawSqlMutation,
|
|
13
13
|
} from './mutations.js'
|
|
14
14
|
import { systemTables } from './system-tables.js'
|
|
15
|
-
import type
|
|
16
|
-
import { tableHasDerivedMutations } from './table-def.js'
|
|
15
|
+
import { type TableDef, tableHasDerivedMutations } from './table-def.js'
|
|
17
16
|
|
|
18
17
|
export * from './system-tables.js'
|
|
19
18
|
export * as DbSchema from './table-def.js'
|
|
@@ -42,7 +41,7 @@ export type LiveStoreSchema<
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
export type InputSchema = {
|
|
45
|
-
readonly tables: Record<string,
|
|
44
|
+
readonly tables: Record<string, TableDef> | ReadonlyArray<TableDef>
|
|
46
45
|
readonly mutations?: ReadonlyArray<MutationDef.Any> | Record<string, MutationDef.Any>
|
|
47
46
|
/**
|
|
48
47
|
* Can be used to isolate multiple LiveStore apps running in the same origin
|
|
@@ -73,7 +72,6 @@ export const makeSchema = <TInputSchema extends InputSchema>(
|
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
for (const tableDef of systemTables) {
|
|
76
|
-
// @ts-expect-error TODO fix type level issue
|
|
77
75
|
tables.set(tableDef.sqliteDef.name, tableDef)
|
|
78
76
|
}
|
|
79
77
|
|
|
@@ -2,7 +2,7 @@ import { SqliteDsl } from '@livestore/db-schema'
|
|
|
2
2
|
import { shouldNeverHappen } from '@livestore/utils'
|
|
3
3
|
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
|
|
4
4
|
|
|
5
|
-
import type { TableDef
|
|
5
|
+
import type { TableDef } from './table-def.js'
|
|
6
6
|
|
|
7
7
|
export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
|
8
8
|
tableDef: TTableDef,
|
|
@@ -26,7 +26,7 @@ export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
|
|
26
26
|
),
|
|
27
27
|
)
|
|
28
28
|
|
|
29
|
-
export const getDefaultValuesDecoded = <TTableDef extends
|
|
29
|
+
export const getDefaultValuesDecoded = <TTableDef extends TableDef>(
|
|
30
30
|
tableDef: TTableDef,
|
|
31
31
|
fallbackValues?: Record<string, any>,
|
|
32
32
|
) =>
|