@livestore/livestore 0.0.38 → 0.0.39-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.
- package/README.md +3 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/react/fixture.d.ts +97 -3
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +10 -7
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/__tests__/react/useQuery.test.js +12 -23
- package/dist/__tests__/react/useQuery.test.js.map +1 -1
- package/dist/__tests__/react/useRow.test.js +4 -4
- package/dist/__tests__/react/useRow.test.js.map +1 -1
- package/dist/__tests__/reactiveQueries/sql.test.js +32 -35
- package/dist/__tests__/reactiveQueries/sql.test.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +3 -2
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/migrations.js +2 -2
- package/dist/migrations.js.map +1 -1
- package/dist/mutations.d.ts +3 -1
- package/dist/mutations.d.ts.map +1 -1
- package/dist/mutations.js +2 -2
- package/dist/mutations.js.map +1 -1
- package/dist/react/LiveStoreContext.d.ts +2 -2
- package/dist/react/LiveStoreContext.d.ts.map +1 -1
- package/dist/react/LiveStoreContext.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/useAtom.d.ts +5 -0
- package/dist/react/useAtom.d.ts.map +1 -0
- package/dist/react/useAtom.js +16 -0
- package/dist/react/useAtom.js.map +1 -0
- package/dist/react/useQuery.d.ts +3 -3
- package/dist/react/useQuery.d.ts.map +1 -1
- package/dist/react/useQuery.js.map +1 -1
- package/dist/react/useRow.d.ts +5 -5
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +16 -30
- package/dist/react/useRow.js.map +1 -1
- package/dist/react/useTemporaryQuery.d.ts +3 -3
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/reactiveQueries/base-class.d.ts +12 -4
- package/dist/reactiveQueries/base-class.d.ts.map +1 -1
- package/dist/reactiveQueries/base-class.js +1 -0
- package/dist/reactiveQueries/base-class.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts +5 -5
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js +11 -10
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/js.d.ts +10 -7
- package/dist/reactiveQueries/js.d.ts.map +1 -1
- package/dist/reactiveQueries/js.js +19 -11
- package/dist/reactiveQueries/js.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +21 -15
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +50 -28
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/row-query.d.ts +22 -21
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +62 -47
- package/dist/row-query.js.map +1 -1
- package/dist/schema/index.d.ts +3 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +3 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/parse-utils.d.ts +6 -0
- package/dist/schema/parse-utils.d.ts.map +1 -0
- package/dist/schema/parse-utils.js +59 -0
- package/dist/schema/parse-utils.js.map +1 -0
- package/dist/schema/system-tables.d.ts +24 -8
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/table-def.d.ts +32 -7
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +18 -6
- package/dist/schema/table-def.js.map +1 -1
- package/dist/store.d.ts +4 -8
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +7 -8
- package/dist/store.js.map +1 -1
- package/dist/update-path.d.ts +52 -0
- package/dist/update-path.d.ts.map +1 -0
- package/dist/update-path.js +33 -0
- package/dist/update-path.js.map +1 -0
- package/dist/utils/util.d.ts +1 -0
- package/dist/utils/util.d.ts.map +1 -1
- package/dist/utils/util.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/react/fixture.tsx +13 -7
- package/src/__tests__/react/useQuery.test.tsx +12 -29
- package/src/__tests__/react/useRow.test.tsx +5 -7
- package/src/__tests__/reactiveQueries/sql.test.ts +33 -35
- package/src/effect/LiveStore.ts +3 -2
- package/src/index.ts +6 -6
- package/src/migrations.ts +2 -2
- package/src/mutations.ts +8 -3
- package/src/react/LiveStoreContext.ts +3 -2
- package/src/react/index.ts +1 -0
- package/src/react/useAtom.ts +25 -0
- package/src/react/useQuery.ts +7 -7
- package/src/react/useRow.ts +27 -47
- package/src/react/useTemporaryQuery.ts +4 -6
- package/src/reactiveQueries/base-class.ts +18 -4
- package/src/reactiveQueries/graphql.ts +16 -14
- package/src/reactiveQueries/js.ts +36 -15
- package/src/reactiveQueries/sql.ts +77 -37
- package/src/row-query.ts +155 -113
- package/src/schema/index.ts +5 -4
- package/src/schema/parse-utils.ts +84 -0
- package/src/schema/table-def.ts +80 -12
- package/src/store.ts +14 -29
- package/src/update-path.ts +102 -0
- package/src/utils/util.ts +2 -0
package/dist/row-query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-query.js","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAErF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"row-query.js","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { TableDef } from './table-def.js';
|
|
|
4
4
|
export * from './action.js';
|
|
5
5
|
export * from './system-tables.js';
|
|
6
6
|
export * as DbSchema from './table-def.js';
|
|
7
|
+
export * as ParseUtils from './parse-utils.js';
|
|
7
8
|
export type LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbSchema> = {
|
|
8
9
|
/** Only used on type-level */
|
|
9
10
|
readonly _DbSchemaType: TDbSchema;
|
|
@@ -21,8 +22,8 @@ export declare const makeSchema: <TInputSchema extends InputSchema>(schema: TInp
|
|
|
21
22
|
* - object: we discard the keys of the input object and use the table name of each object value (= table definition) as the new object key
|
|
22
23
|
*/
|
|
23
24
|
export type DbSchemaFromInputSchemaTables<TTables extends InputSchema['tables']> = TTables extends ReadonlyArray<TableDef> ? {
|
|
24
|
-
[K in TTables[number] as K['
|
|
25
|
+
[K in TTables[number] as K['sqliteDef']['name']]: K['sqliteDef'];
|
|
25
26
|
} : TTables extends Record<string, TableDef> ? {
|
|
26
|
-
[K in keyof TTables as TTables[K]['
|
|
27
|
+
[K in keyof TTables as TTables[K]['sqliteDef']['name']]: TTables[K]['sqliteDef'];
|
|
27
28
|
} : never;
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAI9C,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI;IACvF,8BAA8B;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAA;IAEjC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC1D,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,UAAU,oIAyBtB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,CAAC,OAAO,SAAS,WAAW,CAAC,QAAQ,CAAC,IAC7E,OAAO,SAAS,aAAa,CAAC,QAAQ,CAAC,GACnC;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;CAAE,GACpE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC;KAAG,CAAC,IAAI,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;CAAE,GACpF,KAAK,CAAA"}
|
package/dist/schema/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { systemTables } from './system-tables.js';
|
|
|
2
2
|
export * from './action.js';
|
|
3
3
|
export * from './system-tables.js';
|
|
4
4
|
export * as DbSchema from './table-def.js';
|
|
5
|
+
export * as ParseUtils from './parse-utils.js';
|
|
5
6
|
export const makeSchema = (
|
|
6
7
|
/** Note when using the object-notation for tables, the object keys are ignored and not used as table names */
|
|
7
8
|
schema) => {
|
|
@@ -12,10 +13,10 @@ schema) => {
|
|
|
12
13
|
const tables = new Map();
|
|
13
14
|
for (const tableDef of inputTables) {
|
|
14
15
|
// TODO validate tables (e.g. index names are unique)
|
|
15
|
-
tables.set(tableDef.
|
|
16
|
+
tables.set(tableDef.sqliteDef.ast.name, tableDef);
|
|
16
17
|
}
|
|
17
18
|
for (const tableDef of systemTables) {
|
|
18
|
-
tables.set(tableDef.
|
|
19
|
+
tables.set(tableDef.sqliteDef.name, tableDef);
|
|
19
20
|
}
|
|
20
21
|
return {
|
|
21
22
|
_DbSchemaType: Symbol('livestore.DbSchemaType'),
|
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAiB9C,MAAM,CAAC,MAAM,UAAU,GAAG;AACxB,8GAA8G;AAC9G,MAAoB,EACoD,EAAE;IAC1E,MAAM,WAAW,GAA4B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACvE,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,yDAAyD;YACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE1C,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,qDAAqD;QACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAAQ;QACtD,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;KACE,CAAA;AAC7B,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReadonlyArray } from '@livestore/utils/effect';
|
|
2
|
+
import { SqliteDsl as __SqliteDsl } from 'effect-db-schema';
|
|
3
|
+
import { type FromColumns, type FromTable, type TableDef } from './table-def.js';
|
|
4
|
+
export declare const many: <TTableDef extends TableDef>(table: TTableDef) => (rawRows: ReadonlyArray<any>) => readonly import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<FromTable.RowDecodedAll<TTableDef>, keyof (TTableDef["sqliteDef"]["columns"] extends infer T extends __SqliteDsl.Columns ? { [K in keyof T as TTableDef["sqliteDef"]["columns"][K]["default"] extends true ? K : never]: {}; } : never)>> & Omit<FromTable.RowDecodedAll<TTableDef>, keyof (TTableDef["sqliteDef"]["columns"] extends infer T extends __SqliteDsl.Columns ? { [K in keyof T as TTableDef["sqliteDef"]["columns"][K]["default"] extends true ? K : never]: {}; } : never)>>[];
|
|
5
|
+
export declare const first: <TTableDef extends TableDef>(table: TTableDef, fallback?: import("effect-db-schema").PrettifyFlat<Pick<__SqliteDsl.FromColumns.RowDecodedAll<TTableDef["sqliteDef"]["columns"]>, keyof (TTableDef["sqliteDef"]["columns"] extends infer T extends __SqliteDsl.Columns ? { [K in keyof T as TTableDef["sqliteDef"]["columns"][K]["nullable"] extends true ? never : TTableDef["sqliteDef"]["columns"][K]["default"] extends import("effect/Option").Some<any> ? never : K]: {}; } : never)> & Partial<Omit<__SqliteDsl.FromColumns.RowDecodedAll<TTableDef["sqliteDef"]["columns"]>, keyof (TTableDef["sqliteDef"]["columns"] extends infer T_1 extends __SqliteDsl.Columns ? { [K in keyof T_1 as TTableDef["sqliteDef"]["columns"][K]["nullable"] extends true ? never : TTableDef["sqliteDef"]["columns"][K]["default"] extends import("effect/Option").Some<any> ? never : K]: {}; } : never)>>> | undefined) => (rawRows: ReadonlyArray<any>) => any;
|
|
6
|
+
//# sourceMappingURL=parse-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-utils.d.ts","sourceRoot":"","sources":["../../src/schema/parse-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAA2B,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA4CzG,eAAO,MAAM,IAAI,8DAEH,cAAc,GAAG,CAAC,2jBAE/B,CAAA;AAED,eAAO,MAAM,KAAK,g4BAKN,cAAc,GAAG,CAAC,QAuB3B,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
|
+
import { pipe, ReadonlyRecord, Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
3
|
+
import { getDefaultValuesDecoded } from './table-def.js';
|
|
4
|
+
// export const headUnsafe = <From, To>(schema: Schema.Schema<ReadonlyArray<From>, ReadonlyArray<To>>) =>
|
|
5
|
+
// Schema.transform(
|
|
6
|
+
// schema,
|
|
7
|
+
// Schema.xxx(schema),
|
|
8
|
+
// (rows) => rows[0]!,
|
|
9
|
+
// (row) => [row],
|
|
10
|
+
// )
|
|
11
|
+
// export const head = <From, To>(schema: Schema.Schema<From, To>) =>
|
|
12
|
+
// Schema.transform(
|
|
13
|
+
// Schema.array(schema),
|
|
14
|
+
// Schema.optionFromSelf(Schema.to(schema)),
|
|
15
|
+
// (rows) => Option.fromNullable(rows[0]),
|
|
16
|
+
// (row) => (row._tag === 'None' ? [] : [row.value]),
|
|
17
|
+
// )
|
|
18
|
+
// export const headOr = <From, To>(schema: Schema.Schema<From, To>, fallback: To) =>
|
|
19
|
+
// Schema.transform(
|
|
20
|
+
// Schema.array(schema),
|
|
21
|
+
// Schema.to(schema),
|
|
22
|
+
// (rows) => rows[0] ?? fallback,
|
|
23
|
+
// (row) => [row],
|
|
24
|
+
// )
|
|
25
|
+
// export const pluck = <From extends {}, To, K extends keyof From & keyof To & string>(
|
|
26
|
+
// schema: Schema.Schema<From, To>,
|
|
27
|
+
// prop: K,
|
|
28
|
+
// ): Schema.Schema<From, To[K]> => {
|
|
29
|
+
// const toSchema = Schema.make(SchemaAST.getPropertySignatures(schema.ast).find((s) => s.name === prop)!.type) as any
|
|
30
|
+
// return Schema.transform(
|
|
31
|
+
// schema,
|
|
32
|
+
// toSchema,
|
|
33
|
+
// (row) => (row as any)[prop],
|
|
34
|
+
// (val) => ({ [prop]: val }) as any,
|
|
35
|
+
// )
|
|
36
|
+
// }
|
|
37
|
+
// export const schemaFor = <TTableDef extends TableDef>(
|
|
38
|
+
// table: TTableDef,
|
|
39
|
+
// ): Schema.Schema<FromTable.RowEncoded<TTableDef>, FromTable.RowDecoded<TTableDef>> =>
|
|
40
|
+
// SqliteDsl.structSchemaForTable(table.sqliteDef) as any
|
|
41
|
+
export const many = (table) => {
|
|
42
|
+
return Schema.parseSync(Schema.array(table.schema));
|
|
43
|
+
};
|
|
44
|
+
export const first = (table, fallback) => (rawRows) => {
|
|
45
|
+
const rows = Schema.parseSync(Schema.array(table.schema))(rawRows);
|
|
46
|
+
if (rows.length === 0) {
|
|
47
|
+
const schemaDefaultValues = getDefaultValuesDecoded(table);
|
|
48
|
+
const defaultValuesResult = pipe(table.sqliteDef.columns, ReadonlyRecord.map((_column, columnName) => fallback?.[columnName] ?? schemaDefaultValues[columnName]), Schema.validateEither(table.schema));
|
|
49
|
+
if (defaultValuesResult._tag === 'Right') {
|
|
50
|
+
return defaultValuesResult.right;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.error('decode error', TreeFormatter.formatError(defaultValuesResult.left));
|
|
54
|
+
return shouldNeverHappen(`Expected query (for table ${table.sqliteDef.name}) to return at least one result but found none. Also can't fallback to default values as some were not provided.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return rows[0];
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=parse-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-utils.js","sourceRoot":"","sources":["../../src/schema/parse-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAGrF,OAAO,EAAoC,uBAAuB,EAAiB,MAAM,gBAAgB,CAAA;AAEzG,yGAAyG;AACzG,sBAAsB;AACtB,cAAc;AACd,0BAA0B;AAC1B,0BAA0B;AAC1B,sBAAsB;AACtB,MAAM;AAEN,qEAAqE;AACrE,sBAAsB;AACtB,4BAA4B;AAC5B,gDAAgD;AAChD,8CAA8C;AAC9C,yDAAyD;AACzD,MAAM;AAEN,qFAAqF;AACrF,sBAAsB;AACtB,4BAA4B;AAC5B,yBAAyB;AACzB,qCAAqC;AACrC,sBAAsB;AACtB,MAAM;AAEN,wFAAwF;AACxF,qCAAqC;AACrC,aAAa;AACb,qCAAqC;AACrC,wHAAwH;AACxH,6BAA6B;AAC7B,cAAc;AACd,gBAAgB;AAChB,mCAAmC;AACnC,yCAAyC;AACzC,MAAM;AACN,IAAI;AAEJ,yDAAyD;AACzD,sBAAsB;AACtB,wFAAwF;AACxF,2DAA2D;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAAgB,EACmE,EAAE;IACrF,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAChB,CACE,KAAgB,EAChB,QAA0E,EAC1E,EAAE,CACJ,CAAC,OAA2B,EAAE,EAAE;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAElE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAE1D,MAAM,mBAAmB,GAAG,IAAI,CAC9B,KAAK,CAAC,SAAS,CAAC,OAAO,EACvB,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAE,QAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,EAC/G,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CACpC,CAAA;QAED,IAAI,mBAAmB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO,mBAAmB,CAAC,KAAK,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;YAClF,OAAO,iBAAiB,CACtB,6BAA6B,KAAK,CAAC,SAAS,CAAC,IAAI,kHAAkH,CACpK,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAE,CAAA;AACjB,CAAC,CAAA"}
|
|
@@ -5,21 +5,21 @@ declare const schemaMetaTable: import("./table-def.js").TableDef<SqliteDsl.Table
|
|
|
5
5
|
tableName: {
|
|
6
6
|
columnType: "text";
|
|
7
7
|
schema: import("@effect/schema/Schema").Schema<string, string>;
|
|
8
|
-
default: import("effect/Option").
|
|
8
|
+
default: import("effect/Option").None<never>;
|
|
9
9
|
nullable: false;
|
|
10
10
|
primaryKey: true;
|
|
11
11
|
};
|
|
12
12
|
schemaHash: {
|
|
13
13
|
columnType: "integer";
|
|
14
14
|
schema: import("@effect/schema/Schema").Schema<number, number>;
|
|
15
|
-
default: import("effect/Option").
|
|
15
|
+
default: import("effect/Option").None<never>;
|
|
16
16
|
nullable: false;
|
|
17
17
|
primaryKey: false;
|
|
18
18
|
};
|
|
19
19
|
updatedAt: {
|
|
20
20
|
columnType: "text";
|
|
21
21
|
schema: import("@effect/schema/Schema").Schema<string, string>;
|
|
22
|
-
default: import("effect/Option").
|
|
22
|
+
default: import("effect/Option").None<never>;
|
|
23
23
|
nullable: false;
|
|
24
24
|
primaryKey: false;
|
|
25
25
|
};
|
|
@@ -27,27 +27,35 @@ declare const schemaMetaTable: import("./table-def.js").TableDef<SqliteDsl.Table
|
|
|
27
27
|
isSingleton: false;
|
|
28
28
|
dynamicRegistration: false;
|
|
29
29
|
disableAutomaticIdColumn: true;
|
|
30
|
-
}
|
|
30
|
+
}, import("@effect/schema/Schema").Schema<{
|
|
31
|
+
readonly tableName: string;
|
|
32
|
+
readonly schemaHash: number;
|
|
33
|
+
readonly updatedAt: string;
|
|
34
|
+
}, {
|
|
35
|
+
readonly tableName: string;
|
|
36
|
+
readonly schemaHash: number;
|
|
37
|
+
readonly updatedAt: string;
|
|
38
|
+
}>>;
|
|
31
39
|
export type SchemaMetaRow = FromTable.RowDecoded<typeof schemaMetaTable>;
|
|
32
40
|
export declare const systemTables: import("./table-def.js").TableDef<SqliteDsl.TableDefinition<"__livestore_schema", {
|
|
33
41
|
tableName: {
|
|
34
42
|
columnType: "text";
|
|
35
43
|
schema: import("@effect/schema/Schema").Schema<string, string>;
|
|
36
|
-
default: import("effect/Option").
|
|
44
|
+
default: import("effect/Option").None<never>;
|
|
37
45
|
nullable: false;
|
|
38
46
|
primaryKey: true;
|
|
39
47
|
};
|
|
40
48
|
schemaHash: {
|
|
41
49
|
columnType: "integer";
|
|
42
50
|
schema: import("@effect/schema/Schema").Schema<number, number>;
|
|
43
|
-
default: import("effect/Option").
|
|
51
|
+
default: import("effect/Option").None<never>;
|
|
44
52
|
nullable: false;
|
|
45
53
|
primaryKey: false;
|
|
46
54
|
};
|
|
47
55
|
updatedAt: {
|
|
48
56
|
columnType: "text";
|
|
49
57
|
schema: import("@effect/schema/Schema").Schema<string, string>;
|
|
50
|
-
default: import("effect/Option").
|
|
58
|
+
default: import("effect/Option").None<never>;
|
|
51
59
|
nullable: false;
|
|
52
60
|
primaryKey: false;
|
|
53
61
|
};
|
|
@@ -55,6 +63,14 @@ export declare const systemTables: import("./table-def.js").TableDef<SqliteDsl.T
|
|
|
55
63
|
isSingleton: false;
|
|
56
64
|
dynamicRegistration: false;
|
|
57
65
|
disableAutomaticIdColumn: true;
|
|
58
|
-
}
|
|
66
|
+
}, import("@effect/schema/Schema").Schema<{
|
|
67
|
+
readonly tableName: string;
|
|
68
|
+
readonly schemaHash: number;
|
|
69
|
+
readonly updatedAt: string;
|
|
70
|
+
}, {
|
|
71
|
+
readonly tableName: string;
|
|
72
|
+
readonly schemaHash: number;
|
|
73
|
+
readonly updatedAt: string;
|
|
74
|
+
}>>[];
|
|
59
75
|
export {};
|
|
60
76
|
//# sourceMappingURL=system-tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASpB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAoB,CAAA"}
|
|
@@ -5,10 +5,16 @@ export declare const blob: SqliteDsl.ColDefFn<"blob">, boolean: SqliteDsl.Specia
|
|
|
5
5
|
export { type SqliteDsl as __SqliteDsl } from 'effect-db-schema';
|
|
6
6
|
export type StateType = 'singleton' | 'dynamic';
|
|
7
7
|
export type DefaultSqliteTableDef = SqliteDsl.TableDefinition<string, SqliteDsl.Columns>;
|
|
8
|
-
export type
|
|
9
|
-
|
|
8
|
+
export type DefaultSqliteTableDefConstrained = SqliteDsl.TableDefinition<string, SqliteDsl.ConstraintColumns>;
|
|
9
|
+
export type TableDef<TSqliteDef extends DefaultSqliteTableDef = DefaultSqliteTableDefConstrained, TIsSingleColumn extends boolean = boolean, TOptions extends TableOptions = TableOptions, TSchema = Schema.Schema<SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
10
|
+
readonly [K in keyof TSqliteDef['columns']]: Schema.Schema.From<TSqliteDef['columns'][K]['schema']>;
|
|
11
|
+
}>, SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
12
|
+
readonly [K in keyof TSqliteDef['columns']]: Schema.Schema.To<TSqliteDef['columns'][K]['schema']>;
|
|
13
|
+
}>>> = {
|
|
14
|
+
sqliteDef: TSqliteDef;
|
|
10
15
|
isSingleColumn: TIsSingleColumn;
|
|
11
16
|
options: TOptions;
|
|
17
|
+
schema: TSchema;
|
|
12
18
|
};
|
|
13
19
|
export type TableOptionsInput = Partial<TableOptions & {
|
|
14
20
|
indexes: SqliteDsl.Index[];
|
|
@@ -32,7 +38,26 @@ export declare const table: <TName extends string, TColumns extends SqliteDsl.Co
|
|
|
32
38
|
indexes: SqliteDsl.Index[];
|
|
33
39
|
}>>(name: TName, columnOrColumns: TColumns, options?: TOptionsInput | undefined) => TableDef<SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
34
40
|
value: TColumns;
|
|
35
|
-
}, WithDefaults<TOptionsInput>>>>, TColumns extends SqliteDsl.ColumnDefinition<any, any> ? true : false, WithDefaults<TOptionsInput
|
|
41
|
+
}, WithDefaults<TOptionsInput>>>>, TColumns extends SqliteDsl.ColumnDefinition<any, any> ? true : false, WithDefaults<TOptionsInput>, Schema.Schema<SqliteDsl.AnyIfConstained<PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
42
|
+
value: TColumns;
|
|
43
|
+
}, WithDefaults<TOptionsInput>>>, { readonly [K in keyof PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
44
|
+
value: TColumns;
|
|
45
|
+
}, WithDefaults<TOptionsInput>>>]: Schema.Schema.From<PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
46
|
+
value: TColumns;
|
|
47
|
+
}, WithDefaults<TOptionsInput>>>[K]["schema"]>; }>, SqliteDsl.AnyIfConstained<PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
48
|
+
value: TColumns;
|
|
49
|
+
}, WithDefaults<TOptionsInput>>>, { readonly [K_1 in keyof PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
50
|
+
value: TColumns;
|
|
51
|
+
}, WithDefaults<TOptionsInput>>>]: Schema.Schema.To<PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
52
|
+
value: TColumns;
|
|
53
|
+
}, WithDefaults<TOptionsInput>>>[K_1]["schema"]>; }>>>;
|
|
54
|
+
export declare const tableIsSingleton: <TTableDef extends TableDef<DefaultSqliteTableDefConstrained, boolean, TableOptions, Schema.Schema<any, any>>>(tableDef: TTableDef) => tableDef is TTableDef & {
|
|
55
|
+
options: {
|
|
56
|
+
isSingleton: true;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
export declare const getDefaultValuesEncoded: <TTableDef extends TableDef<DefaultSqliteTableDefConstrained, boolean, TableOptions, Schema.Schema<any, any>>>(tableDef: TTableDef) => Record<string, any>;
|
|
60
|
+
export declare const getDefaultValuesDecoded: <TTableDef extends TableDef<DefaultSqliteTableDefConstrained, boolean, TableOptions, Schema.Schema<any, any>>>(tableDef: TTableDef) => Record<string, any>;
|
|
36
61
|
type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns & (TOptions['disableAutomaticIdColumn'] extends true ? {} : TOptions['isSingleton'] extends true ? {
|
|
37
62
|
id: SqliteDsl.ColumnDefinition<'singleton', 'singleton'>;
|
|
38
63
|
} : {
|
|
@@ -45,16 +70,16 @@ type WithDefaults<TOptionsInput extends TableOptionsInput> = {
|
|
|
45
70
|
};
|
|
46
71
|
export declare namespace FromTable {
|
|
47
72
|
type RowDecoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
48
|
-
type NullableColumnNames<TTableDef extends TableDef> = FromColumns.NullableColumnNames<TTableDef['
|
|
73
|
+
type NullableColumnNames<TTableDef extends TableDef> = FromColumns.NullableColumnNames<TTableDef['sqliteDef']['columns']>;
|
|
49
74
|
type Columns<TTableDef extends TableDef> = {
|
|
50
|
-
[K in keyof TTableDef['
|
|
75
|
+
[K in keyof TTableDef['sqliteDef']['columns']]: TTableDef['sqliteDef']['columns'][K]['columnType'];
|
|
51
76
|
};
|
|
52
77
|
type RowEncodeNonNullable<TTableDef extends TableDef> = {
|
|
53
|
-
[K in keyof TTableDef['
|
|
78
|
+
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.From<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
54
79
|
};
|
|
55
80
|
type RowEncoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
56
81
|
type RowDecodedAll<TTableDef extends TableDef> = {
|
|
57
|
-
[K in keyof TTableDef['
|
|
82
|
+
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.To<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
58
83
|
};
|
|
59
84
|
}
|
|
60
85
|
export declare namespace FromColumns {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
|
-
import { ReadonlyRecord, Schema } from '@livestore/utils/effect';
|
|
2
|
+
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect';
|
|
3
3
|
import { SqliteAst, SqliteDsl } from 'effect-db-schema';
|
|
4
4
|
export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl;
|
|
5
5
|
import { dynamicallyRegisteredTables } from '../global-state.js';
|
|
@@ -26,19 +26,20 @@ options) => {
|
|
|
26
26
|
columns.id = SqliteDsl.text({ primaryKey: true });
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const
|
|
29
|
+
const sqliteDef = SqliteDsl.table(tablePath, columns, options?.indexes ?? []);
|
|
30
30
|
if (options_.isSingleton) {
|
|
31
|
-
for (const column of
|
|
31
|
+
for (const column of sqliteDef.ast.columns) {
|
|
32
32
|
if (column.nullable === false && column.default._tag === 'None') {
|
|
33
33
|
shouldNeverHappen(`When creating a singleton table, each column must be either nullable or have a default value. Column '${column.name}' is neither.`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
const isSingleColumn = SqliteDsl.isColumnDefinition(columnOrColumns) === true;
|
|
38
|
-
const
|
|
38
|
+
const schema = SqliteDsl.structSchemaForTable(sqliteDef);
|
|
39
|
+
const tableDef = { sqliteDef, isSingleColumn, options: options_, schema };
|
|
39
40
|
if (dynamicallyRegisteredTables.has(tablePath)) {
|
|
40
|
-
if (SqliteAst.hash(dynamicallyRegisteredTables.get(tablePath).
|
|
41
|
-
console.error('previous tableDef', dynamicallyRegisteredTables.get(tablePath), 'new tableDef',
|
|
41
|
+
if (SqliteAst.hash(dynamicallyRegisteredTables.get(tablePath).sqliteDef.ast) !== SqliteAst.hash(sqliteDef.ast)) {
|
|
42
|
+
console.error('previous tableDef', dynamicallyRegisteredTables.get(tablePath), 'new tableDef', sqliteDef.ast);
|
|
42
43
|
shouldNeverHappen(`Table with name "${name}" was already previously defined with a different definition`);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
@@ -47,4 +48,15 @@ options) => {
|
|
|
47
48
|
}
|
|
48
49
|
return tableDef;
|
|
49
50
|
};
|
|
51
|
+
export const tableIsSingleton = (tableDef) => tableDef.options.isSingleton === true;
|
|
52
|
+
export const getDefaultValuesEncoded = (tableDef) => pipe(tableDef.sqliteDef.columns, ReadonlyRecord.filter((_, key) => key !== 'id'), ReadonlyRecord.map((column, columnName) => column.default._tag === 'None'
|
|
53
|
+
? column.nullable === true
|
|
54
|
+
? null
|
|
55
|
+
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
56
|
+
: Schema.encodeSync(column.schema)(column.default.value)));
|
|
57
|
+
export const getDefaultValuesDecoded = (tableDef) => pipe(tableDef.sqliteDef.columns, ReadonlyRecord.filter((_, key) => key !== 'id'), ReadonlyRecord.map((column, columnName) => column.default._tag === 'None'
|
|
58
|
+
? column.nullable === true
|
|
59
|
+
? null
|
|
60
|
+
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
61
|
+
: Schema.validateSync(column.schema)(column.default.value)));
|
|
50
62
|
//# sourceMappingURL=table-def.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -5,20 +5,15 @@ import type { LiveStoreEvent } from './events.js';
|
|
|
5
5
|
import { InMemoryDatabase } from './inMemoryDatabase.js';
|
|
6
6
|
import type { StackInfo } from './react/utils/stack-info.js';
|
|
7
7
|
import type { DebugRefreshReasonBase, ReactiveGraph, Ref } from './reactive.js';
|
|
8
|
-
import type { DbContext, DbGraph,
|
|
9
|
-
import type { LiveStoreGraphQLQuery } from './reactiveQueries/graphql.js';
|
|
10
|
-
import type { LiveStoreJSQuery } from './reactiveQueries/js.js';
|
|
11
|
-
import type { LiveStoreSQLQuery } from './reactiveQueries/sql.js';
|
|
8
|
+
import type { DbContext, DbGraph, LiveQuery } from './reactiveQueries/base-class.js';
|
|
12
9
|
import type { GetActionArgs, LiveStoreSchema } from './schema/index.js';
|
|
13
10
|
import type { Storage, StorageInit } from './storage/index.js';
|
|
14
11
|
import type { ParamsObject } from './utils/util.js';
|
|
15
|
-
export type LiveStoreQuery<TResult extends Record<string, any> = any> = LiveStoreSQLQuery<TResult> | LiveStoreJSQuery<TResult> | LiveStoreGraphQLQuery<TResult, any, any>;
|
|
16
12
|
export type BaseGraphQLContext = {
|
|
17
13
|
queriedTables: Set<string>;
|
|
18
14
|
/** Needed by Pothos Otel plugin for resolver tracing to work */
|
|
19
15
|
otelContext?: otel.Context;
|
|
20
16
|
};
|
|
21
|
-
export type QueryResult<TQuery> = TQuery extends LiveStoreSQLQuery<infer R> ? ReadonlyArray<Readonly<R>> : TQuery extends LiveStoreJSQuery<infer S> ? Readonly<S> : TQuery extends LiveStoreGraphQLQuery<infer Result, any, any> ? Readonly<Result> : never;
|
|
22
17
|
export type GraphQLOptions<TContext> = {
|
|
23
18
|
schema: GraphQLSchema;
|
|
24
19
|
makeContext: (db: InMemoryDatabase, tracer: otel.Tracer) => TContext;
|
|
@@ -83,7 +78,7 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
83
78
|
[key: string]: Ref<null, DbContext, RefreshReason>;
|
|
84
79
|
};
|
|
85
80
|
/** RC-based set to see which queries are currently subscribed to */
|
|
86
|
-
activeQueries: ReferenceCountedSet<
|
|
81
|
+
activeQueries: ReferenceCountedSet<LiveQuery<any>>;
|
|
87
82
|
storage?: Storage;
|
|
88
83
|
private constructor();
|
|
89
84
|
static createStore: <TGraphQLContext_1 extends BaseGraphQLContext>(storeOptions: StoreOptions<TGraphQLContext_1>, parentSpan: otel.Span) => Store<TGraphQLContext_1>;
|
|
@@ -91,7 +86,7 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
91
86
|
* Subscribe to the results of a query
|
|
92
87
|
* Returns a function to cancel the subscription.
|
|
93
88
|
*/
|
|
94
|
-
subscribe: <TResult>(query:
|
|
89
|
+
subscribe: <TResult>(query: LiveQuery<TResult, any>, onNewValue: (value: TResult) => void, onUnsubsubscribe?: () => void, options?: {
|
|
95
90
|
label?: string;
|
|
96
91
|
otelContext?: otel.Context;
|
|
97
92
|
skipInitialRun?: boolean;
|
|
@@ -142,6 +137,7 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
142
137
|
*/
|
|
143
138
|
execute: (query: string, params?: ParamsObject, writeTables?: ReadonlyArray<string>, otelContext?: otel.Context) => void;
|
|
144
139
|
select: (query: string, params?: ParamsObject) => readonly any[];
|
|
140
|
+
makeTableRef: (tableName: string) => Ref<null, DbContext, RefreshReason>;
|
|
145
141
|
}
|
|
146
142
|
/** Create a new LiveStore Store */
|
|
147
143
|
export declare const createStore: <TGraphQLContext extends BaseGraphQLContext>({ schema, loadStorage, graphQLOptions, otelTracer, otelRootSpanContext, sqlite3, boot, dbGraph, }: {
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAA;AAGzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -50,19 +50,13 @@ export class Store {
|
|
|
50
50
|
const allTableNames = new Set([
|
|
51
51
|
...this.schema.tables.keys(),
|
|
52
52
|
// TODO activate dynamic tables
|
|
53
|
-
...Array.from(dynamicallyRegisteredTables.values()).map((_) => _.
|
|
53
|
+
...Array.from(dynamicallyRegisteredTables.values()).map((_) => _.sqliteDef.name),
|
|
54
54
|
]);
|
|
55
55
|
const existingTableRefs = new Map(Array.from(this.graph.atoms.values())
|
|
56
56
|
.filter((_) => _._tag === 'ref' && _.label?.startsWith('tableRef:') === true)
|
|
57
57
|
.map((_) => [_.label.slice('tableRef:'.length), _]));
|
|
58
58
|
for (const tableName of allTableNames) {
|
|
59
|
-
this.tableRefs[tableName] =
|
|
60
|
-
existingTableRefs.get(tableName) ??
|
|
61
|
-
this.graph.makeRef(null, {
|
|
62
|
-
equal: () => false,
|
|
63
|
-
label: `tableRef:${tableName}`,
|
|
64
|
-
meta: { liveStoreRefType: 'table' },
|
|
65
|
-
});
|
|
59
|
+
this.tableRefs[tableName] = existingTableRefs.get(tableName) ?? this.makeTableRef(tableName);
|
|
66
60
|
}
|
|
67
61
|
if (graphQLOptions) {
|
|
68
62
|
this.graphQLSchema = graphQLOptions.schema;
|
|
@@ -319,6 +313,11 @@ export class Store {
|
|
|
319
313
|
select = (query, params = {}) => {
|
|
320
314
|
return this.inMemoryDB.select(query, { bindValues: prepareBindValues(params, query) });
|
|
321
315
|
};
|
|
316
|
+
makeTableRef = (tableName) => this.graph.makeRef(null, {
|
|
317
|
+
equal: () => false,
|
|
318
|
+
label: `tableRef:${tableName}`,
|
|
319
|
+
meta: { liveStoreRefType: 'table' },
|
|
320
|
+
});
|
|
322
321
|
}
|
|
323
322
|
/** Create a new LiveStore Store */
|
|
324
323
|
export const createStore = async ({ schema, loadStorage, graphQLOptions, otelTracer = makeNoopTracer(), otelRootSpanContext = otel.context.active(), sqlite3, boot, dbGraph, }) => {
|