@livestore/common 0.0.47 → 0.0.48-dev.0
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 +68 -0
- package/dist/__tests__/fixture.d.ts.map +1 -0
- package/dist/__tests__/fixture.js +16 -0
- package/dist/__tests__/fixture.js.map +1 -0
- package/dist/adapter-types.d.ts +86 -0
- package/dist/adapter-types.d.ts.map +1 -0
- package/dist/adapter-types.js +2 -0
- package/dist/adapter-types.js.map +1 -0
- package/dist/derived-mutations.d.ts +107 -0
- package/dist/derived-mutations.d.ts.map +1 -0
- package/dist/derived-mutations.js +51 -0
- package/dist/derived-mutations.js.map +1 -0
- package/dist/derived-mutations.test.d.ts +2 -0
- package/dist/derived-mutations.test.d.ts.map +1 -0
- package/dist/derived-mutations.test.js +92 -0
- package/dist/derived-mutations.test.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/init-singleton-tables.d.ts +2 -2
- package/dist/init-singleton-tables.d.ts.map +1 -1
- package/dist/init-singleton-tables.js.map +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/query-info.d.ts +47 -0
- package/dist/query-info.d.ts.map +1 -0
- package/dist/query-info.js +38 -0
- package/dist/query-info.js.map +1 -0
- package/dist/rehydrate-from-mutationlog.d.ts +6 -5
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +24 -7
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/index.d.ts +33 -23
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +31 -15
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/mutations.d.ts +16 -0
- package/dist/schema/mutations.d.ts.map +1 -1
- package/dist/schema/mutations.js +18 -8
- package/dist/schema/mutations.js.map +1 -1
- package/dist/schema/parse-utils.d.ts +14 -4
- package/dist/schema/parse-utils.d.ts.map +1 -1
- package/dist/schema/parse-utils.js +3 -3
- package/dist/schema/parse-utils.js.map +1 -1
- package/dist/schema/system-tables.d.ts +239 -67
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +24 -3
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/schema/table-def.d.ts +53 -10
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +27 -12
- package/dist/schema/table-def.js.map +1 -1
- package/dist/schema-management/common.d.ts +5 -0
- package/dist/schema-management/common.d.ts.map +1 -0
- package/dist/schema-management/common.js +22 -0
- package/dist/schema-management/common.js.map +1 -0
- package/dist/schema-management/migrations.d.ts +18 -0
- package/dist/schema-management/migrations.d.ts.map +1 -0
- package/dist/{migrations.js → schema-management/migrations.js} +29 -36
- package/dist/schema-management/migrations.js.map +1 -0
- package/dist/schema-management/validate-mutation-defs.d.ts +16 -0
- package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -0
- package/dist/schema-management/validate-mutation-defs.js +63 -0
- package/dist/schema-management/validate-mutation-defs.js.map +1 -0
- package/dist/sql-queries/sql-queries.d.ts +4 -4
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js +7 -8
- package/dist/sql-queries/sql-queries.js.map +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync.d.ts +25 -0
- package/dist/sync/sync.d.ts.map +1 -0
- package/dist/sync/sync.js +8 -0
- package/dist/sync/sync.js.map +1 -0
- package/package.json +6 -6
- package/src/__tests__/fixture.ts +23 -0
- package/src/adapter-types.ts +104 -0
- package/src/ambient.d.ts +3 -0
- package/src/derived-mutations.test.ts +100 -0
- package/src/derived-mutations.ts +126 -0
- package/src/index.ts +6 -2
- package/src/init-singleton-tables.ts +2 -2
- package/src/query-info.ts +104 -0
- package/src/rehydrate-from-mutationlog.ts +34 -20
- package/src/schema/index.ts +67 -39
- package/src/schema/mutations.ts +28 -9
- package/src/schema/parse-utils.ts +3 -3
- package/src/schema/system-tables.ts +44 -3
- package/src/schema/table-def.ts +64 -18
- package/src/schema-management/common.ts +29 -0
- package/src/{migrations.ts → schema-management/migrations.ts} +44 -57
- package/src/schema-management/validate-mutation-defs.ts +108 -0
- package/src/sql-queries/sql-queries.ts +8 -9
- package/src/sync/index.ts +1 -0
- package/src/sync/sync.ts +14 -0
- package/dist/database.d.ts +0 -50
- package/dist/database.d.ts.map +0 -1
- package/dist/database.js +0 -2
- package/dist/database.js.map +0 -1
- package/dist/migrations.d.ts +0 -16
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js.map +0 -1
- package/src/database.ts +0 -60
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InMemoryDatabase, MigrationOptionsFromMutationLog } from './adapter-types.js';
|
|
2
2
|
import type { LiveStoreSchema } from './schema/index.js';
|
|
3
|
-
export declare const rehydrateFromMutationLog: ({ logDb, db, schema, }: {
|
|
4
|
-
logDb:
|
|
5
|
-
db:
|
|
3
|
+
export declare const rehydrateFromMutationLog: ({ logDb, db, schema, migrationOptions, }: {
|
|
4
|
+
logDb: InMemoryDatabase;
|
|
5
|
+
db: InMemoryDatabase;
|
|
6
6
|
schema: LiveStoreSchema;
|
|
7
|
-
|
|
7
|
+
migrationOptions: MigrationOptionsFromMutationLog;
|
|
8
|
+
}) => Promise<undefined>;
|
|
8
9
|
//# sourceMappingURL=rehydrate-from-mutationlog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehydrate-from-mutationlog.d.ts","sourceRoot":"","sources":["../src/rehydrate-from-mutationlog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"rehydrate-from-mutationlog.d.ts","sourceRoot":"","sources":["../src/rehydrate-from-mutationlog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAA;AAE3F,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAA;AAG5E,eAAO,MAAM,wBAAwB,6CAKlC;IACD,KAAK,EAAE,gBAAgB,CAAA;IACvB,EAAE,EAAE,gBAAgB,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,+BAA+B,CAAA;CAClD,uBAwEA,CAAA"}
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { Schema } from '@livestore/utils/effect';
|
|
3
3
|
import { getExecArgsFromMutation } from './mutation.js';
|
|
4
|
-
|
|
4
|
+
import { MUTATION_LOG_META_TABLE } from './schema/index.js';
|
|
5
|
+
export const rehydrateFromMutationLog = async ({ logDb, db, schema, migrationOptions, }) => {
|
|
5
6
|
try {
|
|
6
|
-
|
|
7
|
+
// TODO possibly implement this in a streaming fashion
|
|
8
|
+
const stmt = logDb.prepare(`SELECT * FROM ${MUTATION_LOG_META_TABLE} ORDER BY id ASC`);
|
|
7
9
|
const results = stmt.select(undefined);
|
|
8
10
|
performance.mark('livestore:hydrate-from-mutationlog:start');
|
|
9
11
|
for (const row of results) {
|
|
10
12
|
const mutationDef = schema.mutations.get(row.mutation) ?? shouldNeverHappen(`Unknown mutation ${row.mutation}`);
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
+
if (migrationOptions.excludeMutations?.has(row.mutation) === true)
|
|
14
|
+
continue;
|
|
15
|
+
if (Schema.hash(mutationDef.schema) !== row.schemaHash) {
|
|
16
|
+
console.warn(`Schema hash mismatch for mutation ${row.mutation}. Trying to apply mutation anyway.`);
|
|
17
|
+
}
|
|
18
|
+
const argsDecodedEither = Schema.decodeUnknownEither(Schema.parseJson(mutationDef.schema))(row.argsJson);
|
|
19
|
+
if (argsDecodedEither._tag === 'Left') {
|
|
20
|
+
return shouldNeverHappen(`\
|
|
21
|
+
There was an error decoding the persisted mutation event args for mutation "${row.mutation}".
|
|
22
|
+
This likely means the schema has changed in an incompatible way.
|
|
23
|
+
|
|
24
|
+
Error: ${argsDecodedEither.left}
|
|
25
|
+
`);
|
|
13
26
|
}
|
|
14
|
-
const argsDecoded = Schema.decodeUnknownSync(Schema.parseJson(mutationDef.schema))(row.args_json);
|
|
15
27
|
const mutationEventDecoded = {
|
|
16
28
|
id: row.id,
|
|
17
29
|
mutation: row.mutation,
|
|
18
|
-
args:
|
|
30
|
+
args: argsDecodedEither.right,
|
|
19
31
|
};
|
|
20
32
|
// const argsEncoded = JSON.parse(row.args_json)
|
|
21
33
|
// const mutationSqlRes =
|
|
@@ -27,7 +39,12 @@ export const rehydrateFromMutationLog = ({ logDb, db, schema, }) => {
|
|
|
27
39
|
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
|
28
40
|
for (const { statementSql, bindValues } of execArgsArr) {
|
|
29
41
|
try {
|
|
30
|
-
db.execute(statementSql, bindValues);
|
|
42
|
+
const getRowsChanged = db.execute(statementSql, bindValues);
|
|
43
|
+
if (import.meta.env.DEV &&
|
|
44
|
+
getRowsChanged() === 0 &&
|
|
45
|
+
migrationOptions.logging?.excludeAffectedRows?.(statementSql) !== true) {
|
|
46
|
+
console.warn(`Mutation "${mutationDef.name}" did not affect any rows:`, statementSql, bindValues);
|
|
47
|
+
}
|
|
31
48
|
// console.log(`Re-executed mutation ${mutationSql}`, bindValues)
|
|
32
49
|
}
|
|
33
50
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehydrate-from-mutationlog.js","sourceRoot":"","sources":["../src/rehydrate-from-mutationlog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"rehydrate-from-mutationlog.js","sourceRoot":"","sources":["../src/rehydrate-from-mutationlog.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SqliteDsl } from 'effect-db-schema';
|
|
2
|
+
import type { MigrationOptions } from '../adapter-types.js';
|
|
2
3
|
import { type MutationDef, type MutationDefMap, type MutationDefRecord, type RawSqlMutation } from './mutations.js';
|
|
3
4
|
import type { TableDef } from './table-def.js';
|
|
4
5
|
export * from './system-tables.js';
|
|
@@ -12,32 +13,41 @@ export type LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbS
|
|
|
12
13
|
readonly _MutationDefMapType: TMutationsDefRecord;
|
|
13
14
|
readonly tables: Map<string, TableDef>;
|
|
14
15
|
readonly mutations: MutationDefMap;
|
|
16
|
+
/** Compound hash of all table defs etc */
|
|
17
|
+
readonly hash: number;
|
|
18
|
+
migrationOptions: MigrationOptions;
|
|
15
19
|
};
|
|
16
20
|
export type InputSchema = {
|
|
17
21
|
readonly tables: Record<string, TableDef> | ReadonlyArray<TableDef>;
|
|
18
22
|
readonly mutations?: ReadonlyArray<MutationDef.Any> | Record<string, MutationDef.Any>;
|
|
19
23
|
};
|
|
20
|
-
export declare const makeSchema: <TInputSchema extends InputSchema>(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
}
|
|
24
|
+
export declare const makeSchema: <TInputSchema extends InputSchema>(inputSchema: TInputSchema & {
|
|
25
|
+
/** "hard-reset" is currently the default strategy */
|
|
26
|
+
migrations?: MigrationOptions<FromInputSchema.DeriveSchema<TInputSchema>>;
|
|
27
|
+
}) => FromInputSchema.DeriveSchema<TInputSchema>;
|
|
28
|
+
declare namespace FromInputSchema {
|
|
29
|
+
export type DeriveSchema<TInputSchema extends InputSchema> = LiveStoreSchema<DbSchemaFromInputSchemaTables<TInputSchema['tables']>, MutationDefRecordFromInputSchemaMutations<TInputSchema['mutations']>>;
|
|
30
|
+
/**
|
|
31
|
+
* In case of ...
|
|
32
|
+
* - array: we use the table name of each array item (= table definition) as the object key
|
|
33
|
+
* - 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
|
|
34
|
+
*/
|
|
35
|
+
type DbSchemaFromInputSchemaTables<TTables extends InputSchema['tables']> = TTables extends ReadonlyArray<TableDef> ? {
|
|
36
|
+
[K in TTables[number] as K['sqliteDef']['name']]: K['sqliteDef'];
|
|
37
|
+
} : TTables extends Record<string, TableDef> ? {
|
|
38
|
+
[K in keyof TTables as TTables[K]['sqliteDef']['name']]: TTables[K]['sqliteDef'];
|
|
39
|
+
} : never;
|
|
40
|
+
type MutationDefRecordFromInputSchemaMutations<TMutations extends InputSchema['mutations']> = TMutations extends ReadonlyArray<MutationDef.Any> ? {
|
|
41
|
+
[K in TMutations[number] as K['name']]: K;
|
|
42
|
+
} & {
|
|
43
|
+
'livestore.RawSql': RawSqlMutation;
|
|
44
|
+
} : TMutations extends {
|
|
45
|
+
[name: string]: MutationDef.Any;
|
|
46
|
+
} ? {
|
|
47
|
+
[K in keyof TMutations as TMutations[K]['name']]: TMutations[K];
|
|
48
|
+
} & {
|
|
49
|
+
'livestore.RawSql': RawSqlMutation;
|
|
50
|
+
} : never;
|
|
51
|
+
export {};
|
|
52
|
+
}
|
|
43
53
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,cAAc,oBAAoB,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,cAAc,gBAAgB,CAAA;AAE9B,MAAM,MAAM,eAAe,CACzB,SAAS,SAAS,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,EACzD,mBAAmB,SAAS,iBAAiB,GAAG,iBAAiB,IAC/D;IACF,8BAA8B;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAA;IACjC,8BAA8B;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IAEjD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;CACtF,CAAA;AAED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { isReadonlyArray } from '@livestore/utils';
|
|
1
|
+
import { isReadonlyArray, shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { SqliteAst } from 'effect-db-schema';
|
|
3
|
+
import { makeDerivedMutationDefsForTable } from '../derived-mutations.js';
|
|
3
4
|
import { rawSqlMutation, } from './mutations.js';
|
|
4
5
|
import { systemTables } from './system-tables.js';
|
|
5
6
|
export * from './system-tables.js';
|
|
@@ -8,40 +9,55 @@ export * as ParseUtils from './parse-utils.js';
|
|
|
8
9
|
export * from './mutations.js';
|
|
9
10
|
export const makeSchema = (
|
|
10
11
|
/** Note when using the object-notation for tables/mutations, the object keys are ignored and not used as table/mutation names */
|
|
11
|
-
|
|
12
|
-
const inputTables = Array.isArray(
|
|
13
|
-
?
|
|
14
|
-
:
|
|
15
|
-
Object.values(schema.tables);
|
|
12
|
+
inputSchema) => {
|
|
13
|
+
const inputTables = Array.isArray(inputSchema.tables)
|
|
14
|
+
? inputSchema.tables
|
|
15
|
+
: Object.values(inputSchema.tables);
|
|
16
16
|
const tables = new Map();
|
|
17
17
|
for (const tableDef of inputTables) {
|
|
18
18
|
// TODO validate tables (e.g. index names are unique)
|
|
19
|
+
if (tables.has(tableDef.sqliteDef.ast.name)) {
|
|
20
|
+
shouldNeverHappen(`Duplicate table name: ${tableDef.sqliteDef.ast.name}. Please use unique names for tables.`);
|
|
21
|
+
}
|
|
19
22
|
tables.set(tableDef.sqliteDef.ast.name, tableDef);
|
|
20
23
|
}
|
|
21
24
|
for (const tableDef of systemTables) {
|
|
22
25
|
tables.set(tableDef.sqliteDef.name, tableDef);
|
|
23
26
|
}
|
|
24
27
|
const mutations = new Map();
|
|
25
|
-
if (isReadonlyArray(
|
|
26
|
-
for (const mutation of
|
|
28
|
+
if (isReadonlyArray(inputSchema.mutations)) {
|
|
29
|
+
for (const mutation of inputSchema.mutations) {
|
|
27
30
|
mutations.set(mutation.name, mutation);
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
else {
|
|
31
|
-
for (const
|
|
32
|
-
mutations.
|
|
34
|
+
for (const mutation of Object.values(inputSchema.mutations ?? {})) {
|
|
35
|
+
if (mutations.has(mutation.name)) {
|
|
36
|
+
shouldNeverHappen(`Duplicate mutation name: ${mutation.name}. Please use unique names for mutations.`);
|
|
37
|
+
}
|
|
38
|
+
mutations.set(mutation.name, mutation);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
mutations.set(rawSqlMutation.name, rawSqlMutation);
|
|
42
|
+
for (const tableDef of tables.values()) {
|
|
43
|
+
if (tableDef.options.deriveMutations) {
|
|
44
|
+
const derivedMutationDefs = makeDerivedMutationDefsForTable(tableDef);
|
|
45
|
+
mutations.set(derivedMutationDefs.insert.name, derivedMutationDefs.insert);
|
|
46
|
+
mutations.set(derivedMutationDefs.update.name, derivedMutationDefs.update);
|
|
47
|
+
mutations.set(derivedMutationDefs.delete.name, derivedMutationDefs.delete);
|
|
33
48
|
}
|
|
34
49
|
}
|
|
35
|
-
|
|
50
|
+
const hash = SqliteAst.hash({
|
|
51
|
+
_tag: 'dbSchema',
|
|
52
|
+
tables: [...tables.values()].map((_) => _.sqliteDef.ast),
|
|
53
|
+
});
|
|
36
54
|
return {
|
|
37
55
|
_DbSchemaType: Symbol('livestore.DbSchemaType'),
|
|
38
56
|
_MutationDefMapType: Symbol('livestore.MutationDefMapType'),
|
|
39
57
|
tables,
|
|
40
58
|
mutations,
|
|
59
|
+
migrationOptions: inputSchema.migrations ?? { strategy: 'hard-reset' },
|
|
60
|
+
hash,
|
|
41
61
|
};
|
|
42
62
|
};
|
|
43
|
-
export const makeSchemaHash = (schema) => SqliteAst.hash({
|
|
44
|
-
_tag: 'dbSchema',
|
|
45
|
-
tables: [...schema.tables.values()].map((_) => _.sqliteDef.ast),
|
|
46
|
-
});
|
|
47
63
|
//# sourceMappingURL=index.js.map
|
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,8 +56,14 @@ export type MutationEvent<TMutationsDef extends MutationDef.Any> = {
|
|
|
56
56
|
args: Schema.Schema.Type<TMutationsDef['schema']>;
|
|
57
57
|
id: string;
|
|
58
58
|
};
|
|
59
|
+
export type MutationEventEncoded<TMutationsDef extends MutationDef.Any> = {
|
|
60
|
+
mutation: TMutationsDef['name'];
|
|
61
|
+
args: Schema.Schema.Encoded<TMutationsDef['schema']>;
|
|
62
|
+
id: string;
|
|
63
|
+
};
|
|
59
64
|
export declare namespace MutationEvent {
|
|
60
65
|
type Any = MutationEvent<MutationDef.Any>;
|
|
66
|
+
type AnyEncoded = MutationEventEncoded<MutationDef.Any>;
|
|
61
67
|
type ForSchema<TSchema extends LiveStoreSchema> = {
|
|
62
68
|
[K in keyof TSchema['_MutationDefMapType']]: MutationEvent<TSchema['_MutationDefMapType'][K]>;
|
|
63
69
|
}[keyof TSchema['_MutationDefMapType']];
|
|
@@ -76,4 +82,14 @@ export type MutationEventSchema<TMutationsDefRecord extends MutationDefRecord> =
|
|
|
76
82
|
};
|
|
77
83
|
}[keyof TMutationsDefRecord]>;
|
|
78
84
|
export declare const makeMutationEventSchema: <TMutationsDefRecord extends MutationDefRecord>(mutationDefRecord: TMutationsDefRecord) => MutationEventSchema<TMutationsDefRecord>;
|
|
85
|
+
export declare const mutationEventSchemaDecodedAny: Schema.Struct<{
|
|
86
|
+
mutation: typeof Schema.String;
|
|
87
|
+
args: typeof Schema.Any;
|
|
88
|
+
id: typeof Schema.String;
|
|
89
|
+
}>;
|
|
90
|
+
export declare const mutationEventSchemaEncodedAny: Schema.Struct<{
|
|
91
|
+
mutation: typeof Schema.String;
|
|
92
|
+
args: typeof Schema.Any;
|
|
93
|
+
id: typeof Schema.String;
|
|
94
|
+
}>;
|
|
79
95
|
//# sourceMappingURL=mutations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,GAAG,kBAAkB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;AAC9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kBAAkB,EAAE,cAAc,CAAA;IAClC,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IAC1F,UAAU,EAAE,OAAO,CAAA;IAEnB,GAAG,EAAE,GAAG,CAAC,MAAM,OAAO,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAA;IAC/C,aAAa,EAAE,GAAG,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,oBAAoB,CAAC,GAAG,IAChC,qBAAqB,CAAC,MAAM,CAAC,GAC7B,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,qBAAqB,CACjC,MAAM,GACN;IACE,GAAG,EAAE,MAAM,CAAA;IACX,yFAAyF;IACzF,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAClC,CACJ,CAAC,CAAA;AAEN,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAE3D,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAC1D,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACjC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAE9B,kDAAkD;IAClD,CAAC,IAAI,EAAE,GAAG,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD,CAAA;AAED,yBAAiB,WAAW,CAAC;IAC3B,KAAY,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAChD;AAGD,eAAO,MAAM,cAAc,2CACnB,KAAK,UACH,
|
|
1
|
+
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/mutations.js
CHANGED
|
@@ -16,14 +16,24 @@ export const makeMutationDefRecord = (inputRecord) => {
|
|
|
16
16
|
result['livestore.RawSql'] = rawSqlMutation;
|
|
17
17
|
return result;
|
|
18
18
|
};
|
|
19
|
-
export const rawSqlMutation = defineMutation('livestore.RawSql', Schema.
|
|
20
|
-
sql: Schema.
|
|
21
|
-
bindValues: Schema.optional(Schema.
|
|
22
|
-
writeTables: Schema.optional(Schema.
|
|
19
|
+
export const rawSqlMutation = defineMutation('livestore.RawSql', Schema.Struct({
|
|
20
|
+
sql: Schema.String,
|
|
21
|
+
bindValues: Schema.optional(Schema.Record(Schema.String, Schema.Any)),
|
|
22
|
+
writeTables: Schema.optional(Schema.ReadonlySet(Schema.String)),
|
|
23
23
|
}), ({ sql, bindValues, writeTables }) => ({ sql, bindValues: bindValues ?? {}, writeTables }));
|
|
24
|
-
export const makeMutationEventSchema = (mutationDefRecord) => Schema.
|
|
25
|
-
mutation: Schema.
|
|
24
|
+
export const makeMutationEventSchema = (mutationDefRecord) => Schema.Union(...Object.values(mutationDefRecord).map((def) => Schema.Struct({
|
|
25
|
+
mutation: Schema.Literal(def.name),
|
|
26
26
|
args: def.schema,
|
|
27
|
-
id: Schema.
|
|
28
|
-
})));
|
|
27
|
+
id: Schema.String,
|
|
28
|
+
}))).annotations({ title: 'MutationEventSchema' });
|
|
29
|
+
export const mutationEventSchemaDecodedAny = Schema.Struct({
|
|
30
|
+
mutation: Schema.String,
|
|
31
|
+
args: Schema.Any,
|
|
32
|
+
id: Schema.String,
|
|
33
|
+
}).annotations({ title: 'MutationEventSchema.DecodedAny' });
|
|
34
|
+
export const mutationEventSchemaEncodedAny = Schema.Struct({
|
|
35
|
+
mutation: Schema.String,
|
|
36
|
+
args: Schema.Any,
|
|
37
|
+
id: Schema.String,
|
|
38
|
+
}).annotations({ title: 'MutationEventSchema.EncodedAny' });
|
|
29
39
|
//# sourceMappingURL=mutations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AA6ChD,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAW,EACX,MAAiC,EACjC,GAA8B,EACE,EAAE;IAClC,MAAM,SAAS,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;IAEvE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAEvD,OAAO,SAA2C,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,WAAyB,EAGzB,EAAE;IACF,MAAM,MAAM,GAAQ,EAAE,CAAA;IAEtB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAAA;IAE3C,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAC1C,kBAAkB,EAClB,MAAM,CAAC,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACrE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC,EACF,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAC3F,CAAA;
|
|
1
|
+
{"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { type FromColumns, type FromTable
|
|
3
|
-
export declare const many: <TTableDef extends
|
|
4
|
-
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
|
2
|
+
import { type FromColumns, type FromTable } from './table-def.js';
|
|
3
|
+
export declare const many: <TTableDef extends {
|
|
4
|
+
sqliteDef: import("./table-def.js").DefaultSqliteTableDefConstrained;
|
|
5
|
+
isSingleColumn: boolean;
|
|
6
|
+
options: import("./table-def.js").TableOptions;
|
|
7
|
+
schema: Schema.Schema<any, any, never>;
|
|
8
|
+
}>(table: TTableDef) => ((rawRows: ReadonlyArray<any>) => ReadonlyArray<FromTable.RowDecoded<TTableDef>>);
|
|
9
|
+
export declare const first: <TTableDef extends {
|
|
10
|
+
sqliteDef: import("./table-def.js").DefaultSqliteTableDefConstrained;
|
|
11
|
+
isSingleColumn: boolean;
|
|
12
|
+
options: import("./table-def.js").TableOptions;
|
|
13
|
+
schema: Schema.Schema<any, any, never>;
|
|
14
|
+
}>(table: TTableDef, fallback?: FromColumns.InsertRowDecoded<TTableDef['sqliteDef']['columns']>) => (rawRows: ReadonlyArray<any>) => any;
|
|
5
15
|
//# sourceMappingURL=parse-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-utils.d.ts","sourceRoot":"","sources":["../../src/schema/parse-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-utils.d.ts","sourceRoot":"","sources":["../../src/schema/parse-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAGrF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAA0C,MAAM,gBAAgB,CAAA;AAEzG,eAAO,MAAM,IAAI;;;;;UACR,SAAS,KACf,CAAC,CAAC,OAAO,EAAE,cAAc,GAAG,CAAC,KAAK,cAAc,UAAU,UAAU,CAAC,SAAS,CAAC,CAAC,CAElF,CAAA;AAED,eAAO,MAAM,KAAK;;;;;UAEP,SAAS,aACL,YAAY,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,eAElE,cAAc,GAAG,CAAC,QAuB3B,CAAA"}
|
|
@@ -2,10 +2,10 @@ import { shouldNeverHappen } from '@livestore/utils';
|
|
|
2
2
|
import { pipe, ReadonlyRecord, Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
3
3
|
import { getDefaultValuesDecoded } from './table-def.js';
|
|
4
4
|
export const many = (table) => {
|
|
5
|
-
return Schema.decodeSync(Schema.
|
|
5
|
+
return Schema.decodeSync(Schema.Array(table.schema));
|
|
6
6
|
};
|
|
7
7
|
export const first = (table, fallback) => (rawRows) => {
|
|
8
|
-
const rows = Schema.decodeSync(Schema.
|
|
8
|
+
const rows = Schema.decodeSync(Schema.Array(table.schema))(rawRows);
|
|
9
9
|
if (rows.length === 0) {
|
|
10
10
|
const schemaDefaultValues = getDefaultValuesDecoded(table);
|
|
11
11
|
const defaultValuesResult = pipe(table.sqliteDef.columns, ReadonlyRecord.map((_column, columnName) => fallback?.[columnName] ?? schemaDefaultValues[columnName]), Schema.validateEither(table.schema));
|
|
@@ -13,7 +13,7 @@ export const first = (table, fallback) => (rawRows) => {
|
|
|
13
13
|
return defaultValuesResult.right;
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
|
-
console.error('decode error', TreeFormatter.
|
|
16
|
+
console.error('decode error', TreeFormatter.formatErrorSync(defaultValuesResult.left));
|
|
17
17
|
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.`);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1 +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,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAAgB,EACmE,EAAE;IACrF,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,CAAA;AAC9D,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,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEnE,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,
|
|
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,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAAgB,EACmE,EAAE;IACrF,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,CAAA;AAC9D,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,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEnE,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,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;YACtF,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"}
|