@livestore/common 0.0.54-dev.22 → 0.0.54-dev.23
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 +0 -2
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/adapter-types.d.ts +59 -4
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +16 -11
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages.d.ts +41 -39
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +27 -28
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/devtools/devtools-window-message.d.ts +26 -0
- package/dist/devtools/devtools-window-message.d.ts.map +1 -0
- package/dist/devtools/devtools-window-message.js +30 -0
- package/dist/devtools/devtools-window-message.js.map +1 -0
- package/dist/devtools/index.d.ts +1 -0
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +1 -0
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/rehydrate-from-mutationlog.d.ts +8 -3
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +71 -56
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/system-tables.d.ts +3 -8
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/table-def.d.ts +0 -2
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +0 -1
- package/dist/schema/table-def.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +9 -4
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +24 -13
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
- package/src/adapter-types.ts +46 -15
- package/src/devtools/devtools-messages.ts +55 -48
- package/src/devtools/devtools-window-message.ts +25 -0
- package/src/devtools/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/rehydrate-from-mutationlog.ts +100 -64
- package/src/schema/table-def.ts +0 -4
- package/src/schema-management/migrations.ts +104 -84
- package/src/version.ts +3 -0
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from '@livestore/utils/effect';
|
|
2
|
+
import { type InMemoryDatabase, type MigrationOptionsFromMutationLog, SqliteError } from './adapter-types.js';
|
|
2
3
|
import type { LiveStoreSchema } from './schema/index.js';
|
|
3
|
-
export declare const rehydrateFromMutationLog: ({ logDb, db, schema, migrationOptions, }: {
|
|
4
|
+
export declare const rehydrateFromMutationLog: ({ logDb, db, schema, migrationOptions, onProgress, }: {
|
|
4
5
|
logDb: InMemoryDatabase;
|
|
5
6
|
db: InMemoryDatabase;
|
|
6
7
|
schema: LiveStoreSchema;
|
|
7
8
|
migrationOptions: MigrationOptionsFromMutationLog;
|
|
8
|
-
|
|
9
|
+
onProgress: (_: {
|
|
10
|
+
done: number;
|
|
11
|
+
total: number;
|
|
12
|
+
}) => Effect.Effect<void>;
|
|
13
|
+
}) => Effect.Effect<void, SqliteError, never>;
|
|
9
14
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"rehydrate-from-mutationlog.d.ts","sourceRoot":"","sources":["../src/rehydrate-from-mutationlog.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAE/E,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,+BAA+B,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE7G,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAA;AAK5E,eAAO,MAAM,wBAAwB,yDAMlC;IACD,KAAK,EAAE,gBAAgB,CAAA;IACvB,EAAE,EAAE,gBAAgB,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,+BAA+B,CAAA;IACjD,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;CACxE,4CAwGE,CAAA"}
|
|
@@ -1,68 +1,83 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
|
2
|
+
import { Chunk, Effect, Option, Schema, Stream } from '@livestore/utils/effect';
|
|
3
|
+
import { SqliteError } from './adapter-types.js';
|
|
3
4
|
import { getExecArgsFromMutation } from './mutation.js';
|
|
4
5
|
import { MUTATION_LOG_META_TABLE } from './schema/index.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return shouldNeverHappen(`\
|
|
6
|
+
import { sql } from './util.js';
|
|
7
|
+
export const rehydrateFromMutationLog = ({ logDb, db, schema, migrationOptions, onProgress, }) => Effect.gen(function* () {
|
|
8
|
+
const mutationsCount = logDb
|
|
9
|
+
.prepare(`SELECT COUNT(*) AS count FROM ${MUTATION_LOG_META_TABLE}`)
|
|
10
|
+
.select(undefined)[0].count;
|
|
11
|
+
const processMutation = (row) => Effect.gen(function* () {
|
|
12
|
+
const mutationDef = schema.mutations.get(row.mutation) ?? shouldNeverHappen(`Unknown mutation ${row.mutation}`);
|
|
13
|
+
if (migrationOptions.excludeMutations?.has(row.mutation) === true)
|
|
14
|
+
return;
|
|
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
21
|
There was an error decoding the persisted mutation event args for mutation "${row.mutation}".
|
|
22
22
|
This likely means the schema has changed in an incompatible way.
|
|
23
23
|
|
|
24
24
|
Error: ${argsDecodedEither.left}
|
|
25
25
|
`);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
// console.log(`Re-executed mutation ${mutationSql}`, bindValues)
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
console.error(`Error executing migration for mutation ${statementSql}`, bindValues, e);
|
|
52
|
-
debugger;
|
|
53
|
-
throw e;
|
|
26
|
+
}
|
|
27
|
+
const mutationEventDecoded = {
|
|
28
|
+
id: row.id,
|
|
29
|
+
mutation: row.mutation,
|
|
30
|
+
args: argsDecodedEither.right,
|
|
31
|
+
};
|
|
32
|
+
// const argsEncoded = JSON.parse(row.args_json)
|
|
33
|
+
// const mutationSqlRes =
|
|
34
|
+
// typeof mutation.sql === 'string'
|
|
35
|
+
// ? mutation.sql
|
|
36
|
+
// : mutation.sql(Schema.decodeUnknownSync(mutation.schema)(argsEncoded))
|
|
37
|
+
// const mutationSql = typeof mutationSqlRes === 'string' ? mutationSqlRes : mutationSqlRes.sql
|
|
38
|
+
// const bindValues = typeof mutationSqlRes === 'string' ? argsEncoded : mutationSqlRes.bindValues
|
|
39
|
+
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
|
40
|
+
for (const { statementSql, bindValues } of execArgsArr) {
|
|
41
|
+
try {
|
|
42
|
+
// TODO cache prepared statements for mutations
|
|
43
|
+
const getRowsChanged = db.execute(statementSql, bindValues);
|
|
44
|
+
if (import.meta.env.DEV &&
|
|
45
|
+
getRowsChanged() === 0 &&
|
|
46
|
+
migrationOptions.logging?.excludeAffectedRows?.(statementSql) !== true) {
|
|
47
|
+
console.warn(`Mutation "${mutationDef.name}" did not affect any rows:`, statementSql, bindValues);
|
|
54
48
|
}
|
|
49
|
+
// console.log(`Re-executed mutation ${mutationSql}`, bindValues)
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
yield* new SqliteError({
|
|
53
|
+
sql: statementSql,
|
|
54
|
+
bindValues,
|
|
55
|
+
code: e.resultCode,
|
|
56
|
+
cause: e,
|
|
57
|
+
});
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
60
|
+
}).pipe(Effect.withSpan(`@livestore/common:rehydrateFromMutationLog:processMutation`));
|
|
61
|
+
const CHUNK_SIZE = 100;
|
|
62
|
+
const stmt = logDb.prepare(sql `\
|
|
63
|
+
SELECT * FROM ${MUTATION_LOG_META_TABLE}
|
|
64
|
+
WHERE id > COALESCE($id, '')
|
|
65
|
+
ORDER BY id ASC
|
|
66
|
+
LIMIT ${CHUNK_SIZE}
|
|
67
|
+
`);
|
|
68
|
+
let processedMutations = 0;
|
|
69
|
+
yield* Stream.unfoldChunk({ _tag: 'Initial ' }, (item) => {
|
|
70
|
+
// End stream if no more rows
|
|
71
|
+
if (Chunk.isChunk(item) && item.length === 0)
|
|
72
|
+
return Option.none();
|
|
73
|
+
const lastId = Chunk.isChunk(item) ? Chunk.last(item).pipe(Option.getOrUndefined)?.id : undefined;
|
|
74
|
+
const nextItem = Chunk.fromIterable(stmt.select({ $id: lastId }));
|
|
75
|
+
const prevItem = Chunk.isChunk(item) ? item : Chunk.empty();
|
|
76
|
+
return Option.some([prevItem, nextItem]);
|
|
77
|
+
}).pipe((_) => _, Stream.bufferChunks({ capacity: 2 }), Stream.tap((row) => Effect.gen(function* () {
|
|
78
|
+
yield* processMutation(row);
|
|
79
|
+
processedMutations++;
|
|
80
|
+
yield* onProgress({ done: processedMutations, total: mutationsCount });
|
|
81
|
+
})), Stream.runDrain);
|
|
82
|
+
}).pipe(Effect.withPerformanceMeasure('@livestore/common:rehydrateFromMutationLog'), Effect.withSpan('@livestore/common:rehydrateFromMutationLog'));
|
|
68
83
|
//# sourceMappingURL=rehydrate-from-mutationlog.js.map
|
|
@@ -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;
|
|
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,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE/E,OAAO,EAA+D,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC7G,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE/B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,KAAK,EACL,EAAE,EACF,MAAM,EACN,gBAAgB,EAChB,UAAU,GAOX,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,cAAc,GAAG,KAAK;SACzB,OAAO,CAAC,iCAAiC,uBAAuB,EAAE,CAAC;SACnE,MAAM,CAAoB,SAAS,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAA;IAEjD,MAAM,eAAe,GAAG,CAAC,GAAuB,EAAE,EAAE,CAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE/G,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI;YAAE,OAAM;QAEzE,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,QAAQ,oCAAoC,CAAC,CAAA;QACrG,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxG,IAAI,iBAAiB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,iBAAiB,CAAC;8EAC2C,GAAG,CAAC,QAAQ;;;SAGjF,iBAAiB,CAAC,IAAI;SACtB,CAAC,CAAA;QACF,CAAC;QAED,MAAM,oBAAoB,GAAG;YAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,iBAAiB,CAAC,KAAK;SAC9B,CAAA;QACD,gDAAgD;QAChD,yBAAyB;QACzB,qCAAqC;QACrC,qBAAqB;QACrB,6EAA6E;QAC7E,+FAA+F;QAC/F,kGAAkG;QAElG,MAAM,WAAW,GAAG,uBAAuB,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAElF,KAAK,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;gBAC3D,IACE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;oBACnB,cAAc,EAAE,KAAK,CAAC;oBACtB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,EACtE,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,IAAI,4BAA4B,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;gBACnG,CAAC;gBACD,iEAAiE;YACnE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC;oBACrB,GAAG,EAAE,YAAY;oBACjB,UAAU;oBACV,IAAI,EAAG,CAAS,CAAC,UAAU;oBAC3B,KAAK,EAAE,CAAC;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAAC,CAAA;IAExF,MAAM,UAAU,GAAG,GAAG,CAAA;IAEtB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAA;gBAClB,uBAAuB;;;QAG/B,UAAU;CACjB,CAAC,CAAA;IAEE,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAE1B,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CACvB,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,CAAC,IAAI,EAAE,EAAE;QACP,6BAA6B;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;QAElE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CACjC,IAAI,CAAC,MAAM,CAAqB,EAAE,GAAG,EAAE,MAAM,EAA+B,CAAC,CAC9E,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1C,CAAC,CACF,CAAC,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACR,MAAM,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EACpC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAE3B,kBAAkB,EAAE,CAAA;QACpB,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;IACxE,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAChB,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,sBAAsB,CAAC,4CAA4C,CAAC,EAC3E,MAAM,CAAC,QAAQ,CAAC,4CAA4C,CAAC,CAC9D,CAAA"}
|
|
@@ -26,7 +26,6 @@ export declare const schemaMetaTable: import("./table-def.js").TableDef<SqliteDs
|
|
|
26
26
|
};
|
|
27
27
|
}>, false, {
|
|
28
28
|
isSingleton: false;
|
|
29
|
-
dynamicRegistration: false;
|
|
30
29
|
disableAutomaticIdColumn: true;
|
|
31
30
|
deriveMutations: never;
|
|
32
31
|
isSingleColumn: false;
|
|
@@ -65,7 +64,6 @@ export declare const schemaMutationsMetaTable: import("./table-def.js").TableDef
|
|
|
65
64
|
};
|
|
66
65
|
}>, false, {
|
|
67
66
|
isSingleton: false;
|
|
68
|
-
dynamicRegistration: false;
|
|
69
67
|
disableAutomaticIdColumn: true;
|
|
70
68
|
deriveMutations: never;
|
|
71
69
|
isSingleColumn: false;
|
|
@@ -103,7 +101,6 @@ export declare const systemTables: (import("./table-def.js").TableDef<SqliteDsl.
|
|
|
103
101
|
};
|
|
104
102
|
}>, false, {
|
|
105
103
|
isSingleton: false;
|
|
106
|
-
dynamicRegistration: false;
|
|
107
104
|
disableAutomaticIdColumn: true;
|
|
108
105
|
deriveMutations: never;
|
|
109
106
|
isSingleColumn: false;
|
|
@@ -139,7 +136,6 @@ export declare const systemTables: (import("./table-def.js").TableDef<SqliteDsl.
|
|
|
139
136
|
};
|
|
140
137
|
}>, false, {
|
|
141
138
|
isSingleton: false;
|
|
142
|
-
dynamicRegistration: false;
|
|
143
139
|
disableAutomaticIdColumn: true;
|
|
144
140
|
deriveMutations: never;
|
|
145
141
|
isSingleColumn: false;
|
|
@@ -193,14 +189,13 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<Sql
|
|
|
193
189
|
};
|
|
194
190
|
syncStatus: {
|
|
195
191
|
columnType: "text";
|
|
196
|
-
schema: Schema.Schema<"
|
|
192
|
+
schema: Schema.Schema<"localOnly" | "synced" | "pending" | "error", "localOnly" | "synced" | "pending" | "error", never>;
|
|
197
193
|
default: import("effect/Option").None<never>;
|
|
198
194
|
nullable: false;
|
|
199
195
|
primaryKey: false;
|
|
200
196
|
};
|
|
201
197
|
}>, false, {
|
|
202
198
|
isSingleton: false;
|
|
203
|
-
dynamicRegistration: false;
|
|
204
199
|
disableAutomaticIdColumn: true;
|
|
205
200
|
deriveMutations: never;
|
|
206
201
|
isSingleColumn: false;
|
|
@@ -210,14 +205,14 @@ export declare const mutationLogMetaTable: import("./table-def.js").TableDef<Sql
|
|
|
210
205
|
readonly argsJson: any;
|
|
211
206
|
readonly schemaHash: number;
|
|
212
207
|
readonly createdAt: string;
|
|
213
|
-
readonly syncStatus: "
|
|
208
|
+
readonly syncStatus: "localOnly" | "synced" | "pending" | "error";
|
|
214
209
|
}, {
|
|
215
210
|
readonly id: string;
|
|
216
211
|
readonly mutation: string;
|
|
217
212
|
readonly argsJson: string;
|
|
218
213
|
readonly schemaHash: number;
|
|
219
214
|
readonly createdAt: string;
|
|
220
|
-
readonly syncStatus: "
|
|
215
|
+
readonly syncStatus: "localOnly" | "synced" | "pending" | "error";
|
|
221
216
|
}, never>>;
|
|
222
217
|
export type MutationLogMetaRow = FromTable.RowDecoded<typeof mutationLogMetaTable>;
|
|
223
218
|
//# 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,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAS3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,2BAA2B,iCAAiC,CAAA;AAEzE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UASpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE1F,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA8C,CAAA;AAIvE,eAAO,MAAM,UAAU,6DAA4D,CAAA;AACnF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AAErD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAahC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
|
@@ -34,7 +34,6 @@ export type TableOptions = {
|
|
|
34
34
|
* @default false
|
|
35
35
|
*/
|
|
36
36
|
isSingleton: boolean;
|
|
37
|
-
dynamicRegistration: boolean;
|
|
38
37
|
disableAutomaticIdColumn: boolean;
|
|
39
38
|
/**
|
|
40
39
|
* Setting this to true will automatically derive insert, update and delete mutations for this table. Example:
|
|
@@ -105,7 +104,6 @@ type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> =
|
|
|
105
104
|
});
|
|
106
105
|
type WithDefaults<TOptionsInput extends TableOptionsInput, TIsSingleColumn extends boolean> = {
|
|
107
106
|
isSingleton: TOptionsInput['isSingleton'] extends true ? true : false;
|
|
108
|
-
dynamicRegistration: TOptionsInput['dynamicRegistration'] extends true ? true : false;
|
|
109
107
|
disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false;
|
|
110
108
|
deriveMutations: TOptionsInput['deriveMutations'] extends true ? {
|
|
111
109
|
enabled: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAGvE,eAAO,MAAQ,IAAI,8BAAE,OAAO,4DAAE,MAAM,+GAAE,QAAQ,sDAAE,OAAO,iCAAE,kBAAkB,qEAAE,IAAI,wDAAE,IAAI,8BAAE,IAAI,4BAAc,CAAA;AAE3G,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAE/C,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AACxF,MAAM,MAAM,gCAAgC,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAyB7G,MAAM,MAAM,QAAQ,CAClB,UAAU,SAAS,qBAAqB,GAAG,gCAAgC,EAC3E,eAAe,SAAS,OAAO,GAAG,OAAO,EACzC,QAAQ,SAAS,YAAY,GAAG,YAAY,EAG5C,OAAO,GAAG,MAAM,CAAC,MAAM,CACrB,SAAS,CAAC,eAAe,CACvB,UAAU,CAAC,SAAS,CAAC,EACrB;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAAE,CACxG,EACD,SAAS,CAAC,eAAe,CACvB,UAAU,CAAC,SAAS,CAAC,EACrB;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAAE,CAC3G,CACF,IACC;IACF,SAAS,EAAE,UAAU,CAAA;IAErB,cAAc,EAAE,eAAe,CAAA;IAC/B,OAAO,EAAE,QAAQ,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GACpD,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,GACzD,EAAE,CAAC,CAAA;AAEP,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,iBAAiB,CAAC,GAAG;IACzD,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,CAAA;IAC1B,eAAe,EACX,OAAO,GACP;QACE,OAAO,EAAE,IAAI,CAAA;QACb,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACN,CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;;;OAOG;IACH,WAAW,EAAE,OAAO,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
|
@@ -7,7 +7,6 @@ export const table = (name, columnOrColumns, options) => {
|
|
|
7
7
|
const tablePath = name;
|
|
8
8
|
const options_ = {
|
|
9
9
|
isSingleton: options?.isSingleton ?? false,
|
|
10
|
-
dynamicRegistration: options?.dynamicRegistration ?? false,
|
|
11
10
|
disableAutomaticIdColumn: options?.disableAutomaticIdColumn ?? false,
|
|
12
11
|
deriveMutations: options?.deriveMutations === true
|
|
13
12
|
? { enabled: true, localOnly: false }
|
|
@@ -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;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5C,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
import { Effect } from '@livestore/utils/effect';
|
|
1
2
|
import * as otel from '@opentelemetry/api';
|
|
2
3
|
import { SqliteAst } from 'effect-db-schema';
|
|
3
4
|
import type { InMemoryDatabase } from '../adapter-types.js';
|
|
4
5
|
import type { LiveStoreSchema } from '../schema/index.js';
|
|
5
6
|
import type { SchemaManager } from './common.js';
|
|
6
|
-
export declare const makeSchemaManager: (db: InMemoryDatabase) => SchemaManager
|
|
7
|
-
export declare const migrateDb: ({ db, otelContext, schema, }: {
|
|
7
|
+
export declare const makeSchemaManager: (db: InMemoryDatabase) => Effect.Effect<SchemaManager>;
|
|
8
|
+
export declare const migrateDb: ({ db, otelContext, schema, onProgress, }: {
|
|
8
9
|
db: InMemoryDatabase;
|
|
9
10
|
otelContext?: otel.Context;
|
|
10
11
|
schema: LiveStoreSchema;
|
|
11
|
-
|
|
12
|
+
onProgress?: (opts: {
|
|
13
|
+
done: number;
|
|
14
|
+
total: number;
|
|
15
|
+
}) => Effect.Effect<void>;
|
|
16
|
+
}) => Effect.Effect<void, never, never>;
|
|
12
17
|
export declare const migrateTable: ({ db, tableAst, schemaHash, behaviour, skipMetaTable, }: {
|
|
13
18
|
db: InMemoryDatabase;
|
|
14
19
|
tableAst: SqliteAst.Table;
|
|
@@ -16,6 +21,6 @@ export declare const migrateTable: ({ db, tableAst, schemaHash, behaviour, skipM
|
|
|
16
21
|
schemaHash?: number;
|
|
17
22
|
behaviour: 'drop-and-recreate' | 'create-if-not-exists';
|
|
18
23
|
skipMetaTable?: boolean;
|
|
19
|
-
}) => void
|
|
24
|
+
}) => Effect.Effect<void, never, never>;
|
|
20
25
|
export declare const makeColumnSpec: (tableAst: SqliteAst.Table) => string;
|
|
21
26
|
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,OAAQ,gBAAgB,KAAG,OAAO,MAAM,CAAC,aAAa,CA8BhF,CAAA;AAGJ,eAAO,MAAM,SAAS,6CAKnB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;CAC5E,sCAsDG,CAAA;AAEJ,eAAO,MAAM,YAAY,4DAOtB;IACD,EAAE,EAAE,gBAAgB,CAAA;IACpB,QAAQ,EAAE,UAAU,KAAK,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,sCA8ByG,CAAA;AAO1G,eAAO,MAAM,cAAc,aAAc,UAAU,KAAK,WAQvD,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { memoizeByStringifyArgs } from '@livestore/utils';
|
|
2
|
-
import { Schema as EffectSchema } from '@livestore/utils/effect';
|
|
2
|
+
import { Effect, Schema as EffectSchema } from '@livestore/utils/effect';
|
|
3
3
|
import * as otel from '@opentelemetry/api';
|
|
4
4
|
import { SqliteAst, SqliteDsl } from 'effect-db-schema';
|
|
5
5
|
import { SCHEMA_META_TABLE, SCHEMA_MUTATIONS_META_TABLE, schemaMetaTable, schemaMutationsMetaTable, systemTables, } from '../schema/system-tables.js';
|
|
@@ -7,8 +7,8 @@ import { sql } from '../util.js';
|
|
|
7
7
|
import { dbExecute, dbSelect } from './common.js';
|
|
8
8
|
import { validateSchema } from './validate-mutation-defs.js';
|
|
9
9
|
const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString());
|
|
10
|
-
export const makeSchemaManager = (db) => {
|
|
11
|
-
migrateTable({
|
|
10
|
+
export const makeSchemaManager = (db) => Effect.gen(function* () {
|
|
11
|
+
yield* migrateTable({
|
|
12
12
|
db,
|
|
13
13
|
otelContext: otel.context.active(),
|
|
14
14
|
tableAst: schemaMutationsMetaTable.sqliteDef.ast,
|
|
@@ -27,16 +27,18 @@ export const makeSchemaManager = (db) => {
|
|
|
27
27
|
});
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
|
-
};
|
|
30
|
+
});
|
|
31
31
|
// TODO more graceful DB migration (e.g. backup DB before destructive migrations)
|
|
32
|
-
export const migrateDb = ({ db, otelContext = otel.context.active(), schema, }) => {
|
|
33
|
-
migrateTable({
|
|
32
|
+
export const migrateDb = ({ db, otelContext = otel.context.active(), schema, onProgress, }) => Effect.gen(function* () {
|
|
33
|
+
yield* migrateTable({
|
|
34
34
|
db,
|
|
35
35
|
otelContext,
|
|
36
36
|
tableAst: schemaMetaTable.sqliteDef.ast,
|
|
37
37
|
behaviour: 'create-if-not-exists',
|
|
38
38
|
});
|
|
39
|
-
|
|
39
|
+
// TODO enforce that migrating tables isn't allowed once the store is running
|
|
40
|
+
const schemaManager = yield* makeSchemaManager(db);
|
|
41
|
+
validateSchema(schema, schemaManager);
|
|
40
42
|
const schemaMetaRows = dbSelect(db, sql `SELECT * FROM ${SCHEMA_META_TABLE}`);
|
|
41
43
|
const dbSchemaHashByTable = Object.fromEntries(schemaMetaRows.map(({ tableName, schemaHash }) => [tableName, schemaHash]));
|
|
42
44
|
const tableDefs = new Set([
|
|
@@ -44,21 +46,30 @@ export const migrateDb = ({ db, otelContext = otel.context.active(), schema, })
|
|
|
44
46
|
...systemTables,
|
|
45
47
|
...Array.from(schema.tables.values()).filter((_) => _.sqliteDef.name !== SCHEMA_META_TABLE),
|
|
46
48
|
]);
|
|
49
|
+
const tablesToMigrate = new Set();
|
|
47
50
|
for (const tableDef of tableDefs) {
|
|
48
51
|
const tableAst = tableDef.sqliteDef.ast;
|
|
49
52
|
const tableName = tableAst.name;
|
|
50
53
|
const dbSchemaHash = dbSchemaHashByTable[tableName];
|
|
51
54
|
const schemaHash = SqliteAst.hash(tableAst);
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
if (schemaHash !== dbSchemaHash) {
|
|
56
|
+
tablesToMigrate.add({ tableAst, schemaHash });
|
|
54
57
|
console.log(`Schema hash mismatch for table '${tableName}' (DB: ${dbSchemaHash}, expected: ${schemaHash}), migrating table...`);
|
|
55
|
-
migrateTable({ db, tableAst, otelContext, schemaHash, behaviour: 'drop-and-recreate' });
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
|
-
|
|
60
|
+
let processedTables = 0;
|
|
61
|
+
const tablesCount = tablesToMigrate.size;
|
|
62
|
+
for (const { tableAst, schemaHash } of tablesToMigrate) {
|
|
63
|
+
yield* migrateTable({ db, tableAst, otelContext, schemaHash, behaviour: 'create-if-not-exists' });
|
|
64
|
+
if (onProgress !== undefined) {
|
|
65
|
+
processedTables++;
|
|
66
|
+
yield* onProgress({ done: processedTables, total: tablesCount });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
59
70
|
export const migrateTable = ({ db, tableAst,
|
|
60
71
|
// otelContext,
|
|
61
|
-
schemaHash = SqliteAst.hash(tableAst), behaviour, skipMetaTable = false, }) => {
|
|
72
|
+
schemaHash = SqliteAst.hash(tableAst), behaviour, skipMetaTable = false, }) => Effect.gen(function* () {
|
|
62
73
|
console.log(`Migrating table '${tableAst.name}'...`);
|
|
63
74
|
const tableName = tableAst.name;
|
|
64
75
|
const columnSpec = makeColumnSpec(tableAst);
|
|
@@ -80,7 +91,7 @@ schemaHash = SqliteAst.hash(tableAst), behaviour, skipMetaTable = false, }) => {
|
|
|
80
91
|
ON CONFLICT (tableName) DO UPDATE SET schemaHash = $schemaHash, updatedAt = $updatedAt;
|
|
81
92
|
`, { tableName, schemaHash, updatedAt });
|
|
82
93
|
}
|
|
83
|
-
};
|
|
94
|
+
}).pipe(Effect.withSpan('@livestore/common:migrateTable', { attributes: { tableName: tableAst.name } }));
|
|
84
95
|
const createIndexFromDefinition = (tableName, index) => {
|
|
85
96
|
const uniqueStr = index.unique ? 'UNIQUE' : '';
|
|
86
97
|
return sql `create ${uniqueStr} index ${index.name} on ${tableName} (${index.columns.join(', ')})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAsB,CAAA"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,iBAAiB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/common",
|
|
3
|
-
"version": "0.0.54-dev.
|
|
3
|
+
"version": "0.0.54-dev.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@opentelemetry/api": "^1.9.0",
|
|
36
|
-
"@livestore/utils": "0.0.54-dev.
|
|
37
|
-
"effect-db-schema": "0.0.54-dev.
|
|
36
|
+
"@livestore/utils": "0.0.54-dev.23",
|
|
37
|
+
"effect-db-schema": "0.0.54-dev.23"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"vitest": "^1.6.0"
|
package/src/adapter-types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Effect, Stream, SubscriptionRef
|
|
2
|
-
import {
|
|
1
|
+
import type { Effect, Queue, Stream, SubscriptionRef } from '@livestore/utils/effect'
|
|
2
|
+
import { Schema } from '@livestore/utils/effect'
|
|
3
3
|
|
|
4
4
|
import type { LiveStoreSchema, MutationEvent } from './schema/index.js'
|
|
5
5
|
import type { PreparedBindValues } from './util.js'
|
|
@@ -36,11 +36,36 @@ export type NetworkStatus = {
|
|
|
36
36
|
timestampMs: number
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
export const BootStateProgress = Schema.Struct({
|
|
40
|
+
done: Schema.Number,
|
|
41
|
+
total: Schema.Number,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export const BootStatus = Schema.Union(
|
|
45
|
+
Schema.Struct({ stage: Schema.Literal('loading') }),
|
|
46
|
+
Schema.Struct({ stage: Schema.Literal('migrating'), progress: BootStateProgress }),
|
|
47
|
+
Schema.Struct({ stage: Schema.Literal('rehydrating'), progress: BootStateProgress }),
|
|
48
|
+
Schema.Struct({ stage: Schema.Literal('syncing'), progress: BootStateProgress }),
|
|
49
|
+
Schema.Struct({ stage: Schema.Literal('done') }),
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
export type BootStatus = typeof BootStatus.Type
|
|
53
|
+
|
|
39
54
|
export type Coordinator = {
|
|
55
|
+
isShutdownRef: { current: boolean }
|
|
40
56
|
devtools: {
|
|
57
|
+
enabled: boolean
|
|
41
58
|
channelId: string
|
|
59
|
+
/**
|
|
60
|
+
* Returns a dedicated message port for the store which is established over the message port passed in
|
|
61
|
+
*/
|
|
62
|
+
connect: (options: {
|
|
63
|
+
port: MessagePort
|
|
64
|
+
connectionId: string
|
|
65
|
+
}) => Effect.Effect<{ storeMessagePort: MessagePort }, UnexpectedError>
|
|
42
66
|
}
|
|
43
|
-
|
|
67
|
+
// TODO is exposing the lock status really needed (or only relevant for web adapter?)
|
|
68
|
+
lockStatus: SubscriptionRef.SubscriptionRef<LockStatus>
|
|
44
69
|
syncMutations: Stream.Stream<MutationEvent.AnyEncoded, UnexpectedError>
|
|
45
70
|
execute(queryStr: string, bindValues: PreparedBindValues | undefined): Effect.Effect<void, UnexpectedError>
|
|
46
71
|
mutate(mutationEventEncoded: MutationEvent.Any, options: { persisted: boolean }): Effect.Effect<void, UnexpectedError>
|
|
@@ -57,6 +82,8 @@ export type Coordinator = {
|
|
|
57
82
|
|
|
58
83
|
export type GetRowsChangedCount = () => number
|
|
59
84
|
|
|
85
|
+
export type LockStatus = 'has-lock' | 'no-lock'
|
|
86
|
+
|
|
60
87
|
export type BootDb = {
|
|
61
88
|
_tag: 'BootDb'
|
|
62
89
|
execute(queryStr: string, bindValues?: PreparedBindValues): void
|
|
@@ -66,17 +93,17 @@ export type BootDb = {
|
|
|
66
93
|
}
|
|
67
94
|
|
|
68
95
|
export class UnexpectedError extends Schema.TaggedError<UnexpectedError>()('LiveStore.UnexpectedError', {
|
|
69
|
-
|
|
70
|
-
}) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
96
|
+
cause: Schema.AnyError,
|
|
97
|
+
}) {}
|
|
98
|
+
|
|
99
|
+
export class SqliteError extends Schema.TaggedError<SqliteError>()('LiveStore.SqliteError', {
|
|
100
|
+
sql: Schema.String,
|
|
101
|
+
bindValues: Schema.Record(Schema.String, Schema.Any),
|
|
102
|
+
/** The SQLite result code */
|
|
103
|
+
code: Schema.Number,
|
|
104
|
+
/** The original SQLite3 error */
|
|
105
|
+
cause: Schema.AnyError,
|
|
106
|
+
}) {}
|
|
80
107
|
|
|
81
108
|
// TODO possibly allow a combination of these options
|
|
82
109
|
// TODO allow a way to stream the migration progress back to the app
|
|
@@ -117,4 +144,8 @@ export type MigrationOptionsFromMutationLog<TSchema extends LiveStoreSchema = Li
|
|
|
117
144
|
}
|
|
118
145
|
}
|
|
119
146
|
|
|
120
|
-
export type StoreAdapterFactory = (opts: {
|
|
147
|
+
export type StoreAdapterFactory = (opts: {
|
|
148
|
+
schema: LiveStoreSchema
|
|
149
|
+
devtoolsEnabled: boolean
|
|
150
|
+
bootStatusQueue: Queue.Queue<BootStatus>
|
|
151
|
+
}) => Effect.Effect<StoreAdapter, UnexpectedError>
|