@livestore/livestore 0.0.41 → 0.0.42-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/{inMemoryDatabase.d.ts → MainDatabaseWrapper.d.ts} +11 -18
- package/dist/MainDatabaseWrapper.d.ts.map +1 -0
- package/dist/{inMemoryDatabase.js → MainDatabaseWrapper.js} +26 -72
- package/dist/MainDatabaseWrapper.js.map +1 -0
- package/dist/__tests__/react/fixture.d.ts +41 -40
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +2 -8
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/cud.d.ts +9 -9
- package/dist/cud.d.ts.map +1 -1
- package/dist/cud.js +7 -8
- package/dist/cud.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +10 -10
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +2 -11
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/global-state.d.ts +2 -2
- package/dist/global-state.d.ts.map +1 -1
- package/dist/global-state.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +5 -5
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +37 -21
- package/dist/migrations.js.map +1 -1
- package/dist/query-info.d.ts +8 -9
- package/dist/query-info.d.ts.map +1 -1
- package/dist/query-info.js +1 -1
- package/dist/query-info.js.map +1 -1
- package/dist/react/LiveStoreProvider.d.ts +7 -7
- package/dist/react/LiveStoreProvider.d.ts.map +1 -1
- package/dist/react/LiveStoreProvider.js +11 -19
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/react/useRow.d.ts +6 -6
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +2 -2
- package/dist/react/useRow.js.map +1 -1
- package/dist/reactiveQueries/sql.js +2 -2
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/reactiveQueries/sql.test.js +12 -31
- package/dist/reactiveQueries/sql.test.js.map +1 -1
- package/dist/row-query.d.ts +6 -6
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +9 -12
- package/dist/row-query.js.map +1 -1
- package/dist/store.d.ts +18 -18
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +80 -86
- package/dist/store.js.map +1 -1
- package/dist/utils/bounded-collections.d.ts +1 -1
- package/dist/utils/bounded-collections.d.ts.map +1 -1
- package/dist/utils/bounded-collections.js +2 -1
- package/dist/utils/bounded-collections.js.map +1 -1
- package/dist/utils/util.d.ts +0 -16
- package/dist/utils/util.d.ts.map +1 -1
- package/dist/utils/util.js +0 -38
- package/dist/utils/util.js.map +1 -1
- package/package.json +8 -44
- package/src/{inMemoryDatabase.ts → MainDatabaseWrapper.ts} +40 -94
- package/src/__tests__/react/fixture.tsx +3 -9
- package/src/cud.ts +17 -16
- package/src/effect/LiveStore.ts +12 -24
- package/src/global-state.ts +3 -2
- package/src/index.ts +7 -23
- package/src/migrations.ts +51 -34
- package/src/query-info.ts +10 -9
- package/src/react/LiveStoreProvider.tsx +19 -27
- package/src/react/useRow.ts +24 -12
- package/src/reactiveQueries/sql.test.ts +12 -31
- package/src/reactiveQueries/sql.ts +2 -2
- package/src/row-query.ts +32 -29
- package/src/store.ts +98 -103
- package/src/utils/bounded-collections.ts +3 -2
- package/src/utils/util.ts +0 -44
- package/tsconfig.json +1 -1
- package/vitest.config.js +4 -0
- package/dist/inMemoryDatabase.d.ts.map +0 -1
- package/dist/inMemoryDatabase.js.map +0 -1
- package/dist/schema/index.d.ts +0 -42
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js +0 -42
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/mutations.d.ts +0 -81
- package/dist/schema/mutations.d.ts.map +0 -1
- package/dist/schema/mutations.js +0 -29
- package/dist/schema/mutations.js.map +0 -1
- package/dist/schema/parse-utils.d.ts +0 -6
- package/dist/schema/parse-utils.d.ts.map +0 -1
- package/dist/schema/parse-utils.js +0 -22
- package/dist/schema/parse-utils.js.map +0 -1
- package/dist/schema/system-tables.d.ts +0 -76
- package/dist/schema/system-tables.d.ts.map +0 -1
- package/dist/schema/system-tables.js +0 -11
- package/dist/schema/system-tables.js.map +0 -1
- package/dist/schema/table-def.d.ts +0 -100
- package/dist/schema/table-def.d.ts.map +0 -1
- package/dist/schema/table-def.js +0 -70
- package/dist/schema/table-def.js.map +0 -1
- package/dist/storage/in-memory/index.d.ts +0 -19
- package/dist/storage/in-memory/index.d.ts.map +0 -1
- package/dist/storage/in-memory/index.js +0 -16
- package/dist/storage/in-memory/index.js.map +0 -1
- package/dist/storage/index.d.ts +0 -18
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -9
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/tauri/index.d.ts +0 -23
- package/dist/storage/tauri/index.d.ts.map +0 -1
- package/dist/storage/tauri/index.js +0 -46
- package/dist/storage/tauri/index.js.map +0 -1
- package/dist/storage/utils/idb.d.ts +0 -11
- package/dist/storage/utils/idb.d.ts.map +0 -1
- package/dist/storage/utils/idb.js +0 -71
- package/dist/storage/utils/idb.js.map +0 -1
- package/dist/storage/web-worker/common.d.ts +0 -11
- package/dist/storage/web-worker/common.d.ts.map +0 -1
- package/dist/storage/web-worker/common.js +0 -2
- package/dist/storage/web-worker/common.js.map +0 -1
- package/dist/storage/web-worker/index.d.ts +0 -34
- package/dist/storage/web-worker/index.d.ts.map +0 -1
- package/dist/storage/web-worker/index.js +0 -134
- package/dist/storage/web-worker/index.js.map +0 -1
- package/dist/storage/web-worker/make-worker.d.ts +0 -20
- package/dist/storage/web-worker/make-worker.d.ts.map +0 -1
- package/dist/storage/web-worker/make-worker.js +0 -155
- package/dist/storage/web-worker/make-worker.js.map +0 -1
- package/dist/storage/web-worker/vite-dev-polyfill.d.ts +0 -2
- package/dist/storage/web-worker/vite-dev-polyfill.d.ts.map +0 -1
- package/dist/storage/web-worker/vite-dev-polyfill.js +0 -35
- package/dist/storage/web-worker/vite-dev-polyfill.js.map +0 -1
- package/src/schema/index.ts +0 -100
- package/src/schema/mutations.ts +0 -128
- package/src/schema/parse-utils.ts +0 -42
- package/src/schema/system-tables.ts +0 -21
- package/src/schema/table-def.ts +0 -270
- package/src/storage/in-memory/index.ts +0 -28
- package/src/storage/index.ts +0 -36
- package/src/storage/tauri/index.ts +0 -66
- package/src/storage/utils/idb.ts +0 -85
- package/src/storage/web-worker/common.ts +0 -6
- package/src/storage/web-worker/index.ts +0 -185
- package/src/storage/web-worker/make-worker.ts +0 -214
- package/src/storage/web-worker/vite-dev-polyfill.ts +0 -33
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { BindValues } from '@livestore/sql-queries';
|
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
|
3
|
-
import type { LiveStoreSchema } from './index.js';
|
|
4
|
-
export type MutationDefMap = Map<string | 'livestore.RawSql', MutationDef.Any>;
|
|
5
|
-
export type MutationDefRecord = {
|
|
6
|
-
'livestore.RawSql': RawSqlMutation;
|
|
7
|
-
[name: string]: MutationDef.Any;
|
|
8
|
-
};
|
|
9
|
-
export type InternalMutationSchema<TRecord extends MutationDefRecord = MutationDefRecord> = {
|
|
10
|
-
_DefRecord: TRecord;
|
|
11
|
-
map: Map<keyof TRecord, TRecord[keyof TRecord]>;
|
|
12
|
-
schemaHashMap: Map<keyof TRecord, number>;
|
|
13
|
-
};
|
|
14
|
-
export type MutationDef<TName extends string, TFrom, TTo> = {
|
|
15
|
-
name: TName;
|
|
16
|
-
schema: Schema.Schema<TTo, TFrom>;
|
|
17
|
-
sql: string | ((args: TTo) => string | {
|
|
18
|
-
sql: string;
|
|
19
|
-
/** Note args need to be manually encoded to `BindValues` when returning this argument */
|
|
20
|
-
bindValues: BindValues;
|
|
21
|
-
writeTables?: ReadonlySet<string>;
|
|
22
|
-
});
|
|
23
|
-
/** Helper function to construct mutation event */
|
|
24
|
-
(args: TTo): {
|
|
25
|
-
mutation: TName;
|
|
26
|
-
args: TTo;
|
|
27
|
-
id: string;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
export declare namespace MutationDef {
|
|
31
|
-
type Any = MutationDef<string, any, any>;
|
|
32
|
-
}
|
|
33
|
-
export declare const defineMutation: <TName extends string, TFrom, TTo>(name: TName, schema: Schema.Schema<TTo, TFrom, never>, sql: string | ((args: TTo) => string | {
|
|
34
|
-
sql: string;
|
|
35
|
-
bindValues: BindValues;
|
|
36
|
-
writeTables?: ReadonlySet<string> | undefined;
|
|
37
|
-
})) => MutationDef<TName, TFrom, TTo>;
|
|
38
|
-
export declare const makeMutationDefRecord: <TInputRecord extends Record<string, MutationDef.Any>>(inputRecord: TInputRecord) => { [K in TInputRecord[keyof TInputRecord]["name"]]: Extract<TInputRecord[keyof TInputRecord], {
|
|
39
|
-
name: K;
|
|
40
|
-
}>; };
|
|
41
|
-
export declare const rawSqlMutation: MutationDef<"livestore.RawSql", {
|
|
42
|
-
readonly sql: string;
|
|
43
|
-
readonly bindValues?: {
|
|
44
|
-
readonly [x: string]: any;
|
|
45
|
-
} | undefined;
|
|
46
|
-
readonly writeTables?: readonly string[] | undefined;
|
|
47
|
-
}, {
|
|
48
|
-
readonly sql: string;
|
|
49
|
-
readonly bindValues?: {
|
|
50
|
-
readonly [x: string]: any;
|
|
51
|
-
} | undefined;
|
|
52
|
-
readonly writeTables?: ReadonlySet<string> | undefined;
|
|
53
|
-
}>;
|
|
54
|
-
export type RawSqlMutation = typeof rawSqlMutation;
|
|
55
|
-
export type RawSqlMutationEvent = ReturnType<typeof rawSqlMutation>;
|
|
56
|
-
export type MutationEvent<TMutationsDef extends MutationDef.Any> = {
|
|
57
|
-
mutation: TMutationsDef['name'];
|
|
58
|
-
args: Schema.Schema.To<TMutationsDef['schema']>;
|
|
59
|
-
id: string;
|
|
60
|
-
};
|
|
61
|
-
export declare namespace MutationEvent {
|
|
62
|
-
type Any = MutationEvent<MutationDef.Any>;
|
|
63
|
-
type ForSchema<TSchema extends LiveStoreSchema> = {
|
|
64
|
-
[K in keyof TSchema['_MutationDefMapType']]: MutationEvent<TSchema['_MutationDefMapType'][K]>;
|
|
65
|
-
}[keyof TSchema['_MutationDefMapType']];
|
|
66
|
-
}
|
|
67
|
-
export type MutationEventSchema<TMutationsDefRecord extends MutationDefRecord> = Schema.Schema<{
|
|
68
|
-
[K in keyof TMutationsDefRecord]: {
|
|
69
|
-
mutation: K;
|
|
70
|
-
args: Schema.Schema.To<TMutationsDefRecord[K]['schema']>;
|
|
71
|
-
id: string;
|
|
72
|
-
};
|
|
73
|
-
}[keyof TMutationsDefRecord], {
|
|
74
|
-
[K in keyof TMutationsDefRecord]: {
|
|
75
|
-
mutation: K;
|
|
76
|
-
args: Schema.Schema.From<TMutationsDefRecord[K]['schema']>;
|
|
77
|
-
id: string;
|
|
78
|
-
};
|
|
79
|
-
}[keyof TMutationsDefRecord]>;
|
|
80
|
-
export declare const makeMutationEventSchema: <TMutationsDefRecord extends MutationDefRecord>(mutationDefRecord: TMutationsDefRecord) => MutationEventSchema<TMutationsDefRecord>;
|
|
81
|
-
//# sourceMappingURL=mutations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/mutations.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { cuid } from '@livestore/utils/cuid';
|
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
|
3
|
-
// TODO possibly also allow for mutation event subsumption behaviour
|
|
4
|
-
export const defineMutation = (name, schema, sql) => {
|
|
5
|
-
const makeEvent = (args) => ({ mutation: name, args, id: cuid() });
|
|
6
|
-
Object.defineProperty(makeEvent, 'name', { value: name });
|
|
7
|
-
Object.defineProperty(makeEvent, 'schema', { value: schema });
|
|
8
|
-
Object.defineProperty(makeEvent, 'sql', { value: sql });
|
|
9
|
-
return makeEvent;
|
|
10
|
-
};
|
|
11
|
-
export const makeMutationDefRecord = (inputRecord) => {
|
|
12
|
-
const result = {};
|
|
13
|
-
for (const [name, def] of Object.entries(inputRecord)) {
|
|
14
|
-
result[name] = def;
|
|
15
|
-
}
|
|
16
|
-
result['livestore.RawSql'] = rawSqlMutation;
|
|
17
|
-
return result;
|
|
18
|
-
};
|
|
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
|
-
}), ({ sql, bindValues, writeTables }) => ({ sql, bindValues: bindValues ?? {}, writeTables }));
|
|
24
|
-
export const makeMutationEventSchema = (mutationDefRecord) => Schema.union(...Object.values(mutationDefRecord).map((def) => Schema.struct({
|
|
25
|
-
mutation: Schema.literal(def.name),
|
|
26
|
-
args: def.schema,
|
|
27
|
-
id: Schema.string,
|
|
28
|
-
})));
|
|
29
|
-
//# sourceMappingURL=mutations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/schema/mutations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAuChD,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAW,EACX,MAAiC,EACjC,GAAkH,EAClF,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;AAoCD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,iBAAsC,EACI,EAAE,CAC5C,MAAM,CAAC,KAAK,CACV,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9C,MAAM,CAAC,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC,MAAM;IAChB,EAAE,EAAE,MAAM,CAAC,MAAM;CAClB,CAAC,CACH,CACK,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ReadonlyArray } from '@livestore/utils/effect';
|
|
2
|
-
import { 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
|
|
@@ -1 +0,0 @@
|
|
|
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,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAA2B,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzG,eAAO,MAAM,IAAI,8DAEH,cAAc,GAAG,CAAC,ujBAE/B,CAAA;AAED,eAAO,MAAM,KAAK,w3BAKN,cAAc,GAAG,CAAC,QAuB3B,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
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 many = (table) => {
|
|
5
|
-
return Schema.decodeSync(Schema.array(table.schema));
|
|
6
|
-
};
|
|
7
|
-
export const first = (table, fallback) => (rawRows) => {
|
|
8
|
-
const rows = Schema.decodeSync(Schema.array(table.schema))(rawRows);
|
|
9
|
-
if (rows.length === 0) {
|
|
10
|
-
const schemaDefaultValues = getDefaultValuesDecoded(table);
|
|
11
|
-
const defaultValuesResult = pipe(table.sqliteDef.columns, ReadonlyRecord.map((_column, columnName) => fallback?.[columnName] ?? schemaDefaultValues[columnName]), Schema.validateEither(table.schema));
|
|
12
|
-
if (defaultValuesResult._tag === 'Right') {
|
|
13
|
-
return defaultValuesResult.right;
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
console.error('decode error', TreeFormatter.formatError(defaultValuesResult.left));
|
|
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
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return rows[0];
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=parse-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { SqliteDsl } from 'effect-db-schema';
|
|
2
|
-
import type { FromTable } from './table-def.js';
|
|
3
|
-
export declare const SCHEMA_META_TABLE = "__livestore_schema";
|
|
4
|
-
declare const schemaMetaTable: import("./table-def.js").TableDef<SqliteDsl.TableDefinition<"__livestore_schema", {
|
|
5
|
-
tableName: {
|
|
6
|
-
columnType: "text";
|
|
7
|
-
schema: import("@effect/schema/Schema").Schema<string, string, never>;
|
|
8
|
-
default: import("effect/Option").None<never>;
|
|
9
|
-
nullable: false;
|
|
10
|
-
primaryKey: true;
|
|
11
|
-
};
|
|
12
|
-
schemaHash: {
|
|
13
|
-
columnType: "integer";
|
|
14
|
-
schema: import("@effect/schema/Schema").Schema<number, number, never>;
|
|
15
|
-
default: import("effect/Option").None<never>;
|
|
16
|
-
nullable: false;
|
|
17
|
-
primaryKey: false;
|
|
18
|
-
};
|
|
19
|
-
updatedAt: {
|
|
20
|
-
columnType: "text";
|
|
21
|
-
schema: import("@effect/schema/Schema").Schema<string, string, never>;
|
|
22
|
-
default: import("effect/Option").None<never>;
|
|
23
|
-
nullable: false;
|
|
24
|
-
primaryKey: false;
|
|
25
|
-
};
|
|
26
|
-
}>, false, {
|
|
27
|
-
isSingleton: false;
|
|
28
|
-
dynamicRegistration: false;
|
|
29
|
-
disableAutomaticIdColumn: true;
|
|
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
|
-
}, never>>;
|
|
39
|
-
export type SchemaMetaRow = FromTable.RowDecoded<typeof schemaMetaTable>;
|
|
40
|
-
export declare const systemTables: import("./table-def.js").TableDef<SqliteDsl.TableDefinition<"__livestore_schema", {
|
|
41
|
-
tableName: {
|
|
42
|
-
columnType: "text";
|
|
43
|
-
schema: import("@effect/schema/Schema").Schema<string, string, never>;
|
|
44
|
-
default: import("effect/Option").None<never>;
|
|
45
|
-
nullable: false;
|
|
46
|
-
primaryKey: true;
|
|
47
|
-
};
|
|
48
|
-
schemaHash: {
|
|
49
|
-
columnType: "integer";
|
|
50
|
-
schema: import("@effect/schema/Schema").Schema<number, number, never>;
|
|
51
|
-
default: import("effect/Option").None<never>;
|
|
52
|
-
nullable: false;
|
|
53
|
-
primaryKey: false;
|
|
54
|
-
};
|
|
55
|
-
updatedAt: {
|
|
56
|
-
columnType: "text";
|
|
57
|
-
schema: import("@effect/schema/Schema").Schema<string, string, never>;
|
|
58
|
-
default: import("effect/Option").None<never>;
|
|
59
|
-
nullable: false;
|
|
60
|
-
primaryKey: false;
|
|
61
|
-
};
|
|
62
|
-
}>, false, {
|
|
63
|
-
isSingleton: false;
|
|
64
|
-
dynamicRegistration: false;
|
|
65
|
-
disableAutomaticIdColumn: true;
|
|
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
|
-
}, never>>[];
|
|
75
|
-
export {};
|
|
76
|
-
//# sourceMappingURL=system-tables.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UASpB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAAoB,CAAA"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { SqliteDsl } from 'effect-db-schema';
|
|
2
|
-
import { table } from './table-def.js';
|
|
3
|
-
export const SCHEMA_META_TABLE = '__livestore_schema';
|
|
4
|
-
const schemaMetaTable = table(SCHEMA_META_TABLE, {
|
|
5
|
-
tableName: SqliteDsl.text({ primaryKey: true }),
|
|
6
|
-
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
7
|
-
/** ISO date format */
|
|
8
|
-
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
9
|
-
}, { disableAutomaticIdColumn: true });
|
|
10
|
-
export const systemTables = [schemaMetaTable];
|
|
11
|
-
//# sourceMappingURL=system-tables.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG3E,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAErD,MAAM,eAAe,GAAG,KAAK,CAC3B,iBAAiB,EACjB;IACE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC/C,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA;AAID,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,CAAA"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Schema } from '@livestore/utils/effect';
|
|
2
|
-
import type { Nullable, PrettifyFlat } from 'effect-db-schema';
|
|
3
|
-
import { SqliteDsl } from 'effect-db-schema';
|
|
4
|
-
export declare const blob: SqliteDsl.ColDefFn<"blob">, boolean: SqliteDsl.SpecializedColDefFn<"integer", false, boolean>, column: <TColumnType extends SqliteDsl.FieldColumnType>(columnType: TColumnType) => SqliteDsl.ColDefFn<TColumnType>, datetime: SqliteDsl.SpecializedColDefFn<"text", false, Date>, integer: SqliteDsl.ColDefFn<"integer">, isColumnDefinition: (value: unknown) => value is SqliteDsl.ColumnDefinition<any, any>, json: SqliteDsl.SpecializedColDefFn<"text", true, unknown>, real: SqliteDsl.ColDefFn<"real">, text: SqliteDsl.ColDefFn<"text">;
|
|
5
|
-
export { type SqliteDsl } from 'effect-db-schema';
|
|
6
|
-
export type StateType = 'singleton' | 'dynamic';
|
|
7
|
-
export type DefaultSqliteTableDef = SqliteDsl.TableDefinition<string, SqliteDsl.Columns>;
|
|
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.To<TSqliteDef['columns'][K]['schema']>;
|
|
11
|
-
}>, SqliteDsl.AnyIfConstained<TSqliteDef['columns'], {
|
|
12
|
-
readonly [K in keyof TSqliteDef['columns']]: Schema.Schema.From<TSqliteDef['columns'][K]['schema']>;
|
|
13
|
-
}>>> = {
|
|
14
|
-
sqliteDef: TSqliteDef;
|
|
15
|
-
isSingleColumn: TIsSingleColumn;
|
|
16
|
-
options: TOptions;
|
|
17
|
-
schema: TSchema;
|
|
18
|
-
};
|
|
19
|
-
export type TableOptionsInput = Partial<TableOptions & {
|
|
20
|
-
indexes: SqliteDsl.Index[];
|
|
21
|
-
}>;
|
|
22
|
-
export type TableOptions = {
|
|
23
|
-
/**
|
|
24
|
-
* Setting this to true will have the following consequences:
|
|
25
|
-
* - An `id` column will be added with `primaryKey: true` and `"singleton"` as default value and only allowed value
|
|
26
|
-
* - LiveStore will automatically create the singleton row when the table is created
|
|
27
|
-
* - LiveStore will fail if there is already a column defined with `primaryKey: true`
|
|
28
|
-
*
|
|
29
|
-
* @default false
|
|
30
|
-
*/
|
|
31
|
-
isSingleton: boolean;
|
|
32
|
-
dynamicRegistration: boolean;
|
|
33
|
-
disableAutomaticIdColumn: boolean;
|
|
34
|
-
};
|
|
35
|
-
export declare const table: <TName extends string, TColumns extends SqliteDsl.ColumnDefinition<any, any> | SqliteDsl.Columns, const TOptionsInput extends Partial<TableOptions & {
|
|
36
|
-
indexes: SqliteDsl.Index[];
|
|
37
|
-
}> = Partial<TableOptions & {
|
|
38
|
-
indexes: SqliteDsl.Index[];
|
|
39
|
-
}>>(name: TName, columnOrColumns: TColumns, options?: TOptionsInput | undefined) => TableDef<SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
40
|
-
value: TColumns;
|
|
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.To<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.From<PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
52
|
-
value: TColumns;
|
|
53
|
-
}, WithDefaults<TOptionsInput>>>[K_1]["schema"]>; }>, never>>;
|
|
54
|
-
export declare const tableIsSingleton: <TTableDef extends TableDef<DefaultSqliteTableDefConstrained, boolean, TableOptions, Schema.Schema<any, any, never>>>(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, never>>>(tableDef: TTableDef, fallbackValues?: Record<string, any>) => Record<string, any>;
|
|
60
|
-
export declare const getDefaultValuesDecoded: <TTableDef extends TableDef<DefaultSqliteTableDefConstrained, boolean, TableOptions, Schema.Schema<any, any, never>>>(tableDef: TTableDef) => Record<string, any>;
|
|
61
|
-
type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns & (TOptions['disableAutomaticIdColumn'] extends true ? {} : TOptions['isSingleton'] extends true ? {
|
|
62
|
-
id: SqliteDsl.ColumnDefinition<'singleton', 'singleton'>;
|
|
63
|
-
} : {
|
|
64
|
-
id: SqliteDsl.ColumnDefinition<string, string>;
|
|
65
|
-
});
|
|
66
|
-
type WithDefaults<TOptionsInput extends TableOptionsInput> = {
|
|
67
|
-
isSingleton: TOptionsInput['isSingleton'] extends true ? true : false;
|
|
68
|
-
dynamicRegistration: TOptionsInput['dynamicRegistration'] extends true ? true : false;
|
|
69
|
-
disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false;
|
|
70
|
-
};
|
|
71
|
-
export declare namespace FromTable {
|
|
72
|
-
type RowDecoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
73
|
-
type NullableColumnNames<TTableDef extends TableDef> = FromColumns.NullableColumnNames<TTableDef['sqliteDef']['columns']>;
|
|
74
|
-
type Columns<TTableDef extends TableDef> = {
|
|
75
|
-
[K in keyof TTableDef['sqliteDef']['columns']]: TTableDef['sqliteDef']['columns'][K]['columnType'];
|
|
76
|
-
};
|
|
77
|
-
type RowEncodeNonNullable<TTableDef extends TableDef> = {
|
|
78
|
-
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.From<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
79
|
-
};
|
|
80
|
-
type RowEncoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowEncodeNonNullable<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
81
|
-
type RowDecodedAll<TTableDef extends TableDef> = {
|
|
82
|
-
[K in keyof TTableDef['sqliteDef']['columns']]: Schema.Schema.To<TTableDef['sqliteDef']['columns'][K]['schema']>;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
export declare namespace FromColumns {
|
|
86
|
-
type RowDecoded<TColumns extends SqliteDsl.Columns> = PrettifyFlat<Nullable<Pick<RowDecodedAll<TColumns>, NullableColumnNames<TColumns>>> & Omit<RowDecodedAll<TColumns>, NullableColumnNames<TColumns>>>;
|
|
87
|
-
type RowDecodedAll<TColumns extends SqliteDsl.Columns> = {
|
|
88
|
-
[K in keyof TColumns]: Schema.Schema.To<TColumns[K]['schema']>;
|
|
89
|
-
};
|
|
90
|
-
type RowEncoded<TColumns extends SqliteDsl.Columns> = PrettifyFlat<Nullable<Pick<RowEncodeNonNullable<TColumns>, NullableColumnNames<TColumns>>> & Omit<RowEncodeNonNullable<TColumns>, NullableColumnNames<TColumns>>>;
|
|
91
|
-
type RowEncodeNonNullable<TColumns extends SqliteDsl.Columns> = {
|
|
92
|
-
[K in keyof TColumns]: Schema.Schema.From<TColumns[K]['schema']>;
|
|
93
|
-
};
|
|
94
|
-
type NullableColumnNames<TColumns extends SqliteDsl.Columns> = keyof {
|
|
95
|
-
[K in keyof TColumns as TColumns[K]['default'] extends true ? K : never]: {};
|
|
96
|
-
};
|
|
97
|
-
type RequiredInsertColumnNames<TColumns extends SqliteDsl.Columns> = SqliteDsl.FromColumns.RequiredInsertColumnNames<TColumns>;
|
|
98
|
-
type InsertRowDecoded<TColumns extends SqliteDsl.Columns> = SqliteDsl.FromColumns.InsertRowDecoded<TColumns>;
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=table-def.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
|
-
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect';
|
|
3
|
-
import { SqliteAst, SqliteDsl } from 'effect-db-schema';
|
|
4
|
-
export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl;
|
|
5
|
-
import { dynamicallyRegisteredTables } from '../global-state.js';
|
|
6
|
-
export const table = (name, columnOrColumns,
|
|
7
|
-
// type?: TStateType,
|
|
8
|
-
options) => {
|
|
9
|
-
const tablePath = name;
|
|
10
|
-
const options_ = {
|
|
11
|
-
isSingleton: options?.isSingleton ?? false,
|
|
12
|
-
dynamicRegistration: options?.dynamicRegistration ?? false,
|
|
13
|
-
disableAutomaticIdColumn: options?.disableAutomaticIdColumn ?? false,
|
|
14
|
-
};
|
|
15
|
-
const columns = (SqliteDsl.isColumnDefinition(columnOrColumns) ? { value: columnOrColumns } : columnOrColumns);
|
|
16
|
-
if (options_.disableAutomaticIdColumn === true) {
|
|
17
|
-
if (columns.id === undefined && options_.isSingleton === true) {
|
|
18
|
-
shouldNeverHappen(`Cannot create table ${name} with "isSingleton: true" because there is no column with name "id" and "disableAutomaticIdColumn: true" is set`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else if (columns.id === undefined && ReadonlyRecord.some(columns, (_) => _.primaryKey === true) === false) {
|
|
22
|
-
if (options_.isSingleton) {
|
|
23
|
-
columns.id = SqliteDsl.text({ schema: Schema.literal('singleton'), primaryKey: true, default: 'singleton' });
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
columns.id = SqliteDsl.text({ primaryKey: true });
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
const sqliteDef = SqliteDsl.table(tablePath, columns, options?.indexes ?? []);
|
|
30
|
-
if (options_.isSingleton) {
|
|
31
|
-
for (const column of sqliteDef.ast.columns) {
|
|
32
|
-
if (column.nullable === false && column.default._tag === 'None') {
|
|
33
|
-
shouldNeverHappen(`When creating a singleton table, each column must be either nullable or have a default value. Column '${column.name}' is neither.`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const isSingleColumn = SqliteDsl.isColumnDefinition(columnOrColumns) === true;
|
|
38
|
-
const schema = SqliteDsl.structSchemaForTable(sqliteDef);
|
|
39
|
-
const tableDef = { sqliteDef, isSingleColumn, options: options_, schema };
|
|
40
|
-
if (dynamicallyRegisteredTables.has(tablePath)) {
|
|
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);
|
|
43
|
-
shouldNeverHappen(`Table with name "${name}" was already previously defined with a different definition`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
dynamicallyRegisteredTables.set(tablePath, tableDef);
|
|
48
|
-
}
|
|
49
|
-
return tableDef;
|
|
50
|
-
};
|
|
51
|
-
export const tableIsSingleton = (tableDef) => tableDef.options.isSingleton === true;
|
|
52
|
-
export const getDefaultValuesEncoded = (tableDef, fallbackValues) => pipe(tableDef.sqliteDef.columns, ReadonlyRecord.filter((col, key) => {
|
|
53
|
-
if (fallbackValues?.[key] !== undefined)
|
|
54
|
-
return true;
|
|
55
|
-
if (key === 'id')
|
|
56
|
-
return false;
|
|
57
|
-
return col.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col.default.value) === false;
|
|
58
|
-
}), ReadonlyRecord.map((column, columnName) => fallbackValues?.[columnName] === undefined
|
|
59
|
-
? column.default._tag === 'None'
|
|
60
|
-
? column.nullable === true
|
|
61
|
-
? null
|
|
62
|
-
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
63
|
-
: Schema.encodeSync(column.schema)(column.default.value)
|
|
64
|
-
: fallbackValues[columnName]));
|
|
65
|
-
export const getDefaultValuesDecoded = (tableDef) => pipe(tableDef.sqliteDef.columns, ReadonlyRecord.filter((_, key) => key !== 'id'), ReadonlyRecord.filter((col) => col.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col.default.value) === false), ReadonlyRecord.map((column, columnName) => column.default._tag === 'None'
|
|
66
|
-
? column.nullable === true
|
|
67
|
-
? null
|
|
68
|
-
: shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
|
|
69
|
-
: Schema.validateSync(column.schema)(column.default.value)));
|
|
70
|
-
//# sourceMappingURL=table-def.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,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;AAI3G,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAsEhE,MAAM,CAAC,MAAM,KAAK,GAAG,CAKnB,IAAW,EACX,eAAyB;AACzB,qBAAqB;AACrB,OAAuB,EAUvB,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,CAAA;IAEtB,MAAM,QAAQ,GAAiB;QAC7B,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;QAC1C,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,KAAK;QAC1D,wBAAwB,EAAE,OAAO,EAAE,wBAAwB,IAAI,KAAK;KACrE,CAAA;IAED,MAAM,OAAO,GAAG,CACd,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CACxE,CAAA;IAEtB,IAAI,QAAQ,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9D,iBAAiB,CACf,uBAAuB,IAAI,iHAAiH,CAC7I,CAAA;QACH,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;QAC5G,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;QAC9G,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAE7E,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChE,iBAAiB,CACf,yGAAyG,MAAM,CAAC,IAAI,eAAe,CACpI,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IAE7E,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAqB,CAAA;IAE5F,IAAI,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAChH,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;YAC7G,iBAAiB,CAAC,oBAAoB,IAAI,8DAA8D,CAAC,CAAA;QAC3G,CAAC;IACH,CAAC;SAAM,CAAC;QACN,2BAA2B,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,QAAe,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAAmB,EACyC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAA;AAEtG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAAmB,EACnB,cAAoC,EACpC,EAAE,CACF,IAAI,CACF,QAAQ,CAAC,SAAS,CAAC,OAAO,EAC1B,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC9B,OAAO,GAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAA;AAClG,CAAC,CAAC,EACF,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CACxC,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,SAAS;IACxC,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;QAC/B,CAAC,CAAC,MAAO,CAAC,QAAQ,KAAK,IAAI;YACzB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,iBAAiB,CAAC,UAAU,UAAU,2CAA2C,CAAC;QACtF,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5D,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAC/B,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAA6B,QAAmB,EAAE,EAAE,CACzF,IAAI,CACF,QAAQ,CAAC,SAAS,CAAC,OAAO,EAC1B,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,EAC/C,cAAc,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CACnG,EACD,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CACxC,MAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;IAC7B,CAAC,CAAC,MAAO,CAAC,QAAQ,KAAK,IAAI;QACzB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,iBAAiB,CAAC,UAAU,UAAU,2CAA2C,CAAC;IACtF,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAC/D,CACF,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type * as otel from '@opentelemetry/api';
|
|
2
|
-
import type { MutationEvent } from '../../index.js';
|
|
3
|
-
import type { PreparedBindValues } from '../../utils/util.js';
|
|
4
|
-
import type { Storage, StorageOtelProps } from '../index.js';
|
|
5
|
-
export type StorageOptionsWebInMemory = {
|
|
6
|
-
type: 'web-in-memory';
|
|
7
|
-
};
|
|
8
|
-
/** NOTE: This storage is currently only used for testing */
|
|
9
|
-
export declare class InMemoryStorage implements Storage {
|
|
10
|
-
readonly otelTracer: otel.Tracer;
|
|
11
|
-
constructor(otelTracer: otel.Tracer);
|
|
12
|
-
static load: (_options?: StorageOptionsWebInMemory) => Promise<({ otelTracer }: StorageOtelProps) => InMemoryStorage>;
|
|
13
|
-
execute: (_query: string, _bindValues?: PreparedBindValues) => void;
|
|
14
|
-
mutate: (_mutationEventEncoded: MutationEvent.Any, _parentSpan?: otel.Span | undefined) => void;
|
|
15
|
-
getPersistedData: () => Promise<Uint8Array>;
|
|
16
|
-
getMutationLogData: () => Promise<Uint8Array>;
|
|
17
|
-
dangerouslyReset: () => Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/in-memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,4DAA4D;AAC5D,qBAAa,eAAgB,YAAW,OAAO;IACjC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM;gBAAvB,UAAU,EAAE,IAAI,CAAC,MAAM;IAE5C,MAAM,CAAC,IAAI,cAAqB,yBAAyB,8BAC/B,gBAAgB,sBACzC;IAED,OAAO,WAAY,MAAM,gBAAgB,kBAAkB,KAAG,IAAI,CAAM;IAExE,MAAM,0BAA2B,cAAc,GAAG,gBAAgB,KAAK,IAAI,GAAG,SAAS,UAAO;IAE9F,gBAAgB,QAAa,QAAQ,UAAU,CAAC,CAAoB;IAEpE,kBAAkB,QAAa,QAAQ,UAAU,CAAC,CAAoB;IAEtE,gBAAgB,sBAAiB;CAClC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/** NOTE: This storage is currently only used for testing */
|
|
2
|
-
export class InMemoryStorage {
|
|
3
|
-
otelTracer;
|
|
4
|
-
constructor(otelTracer) {
|
|
5
|
-
this.otelTracer = otelTracer;
|
|
6
|
-
}
|
|
7
|
-
static load = async (_options) => {
|
|
8
|
-
return ({ otelTracer }) => new InMemoryStorage(otelTracer);
|
|
9
|
-
};
|
|
10
|
-
execute = (_query, _bindValues) => { };
|
|
11
|
-
mutate = (_mutationEventEncoded, _parentSpan) => { };
|
|
12
|
-
getPersistedData = async () => new Uint8Array();
|
|
13
|
-
getMutationLogData = async () => new Uint8Array();
|
|
14
|
-
dangerouslyReset = async () => { };
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/in-memory/index.ts"],"names":[],"mappings":"AAUA,4DAA4D;AAC5D,MAAM,OAAO,eAAe;IACL;IAArB,YAAqB,UAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;IAAG,CAAC;IAEhD,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,QAAoC,EAAE,EAAE;QAC3D,OAAO,CAAC,EAAE,UAAU,EAAoB,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,OAAO,GAAG,CAAC,MAAc,EAAE,WAAgC,EAAQ,EAAE,GAAE,CAAC,CAAA;IAExE,MAAM,GAAG,CAAC,qBAAwC,EAAE,WAAmC,EAAE,EAAE,GAAE,CAAC,CAAA;IAE9F,gBAAgB,GAAG,KAAK,IAAyB,EAAE,CAAC,IAAI,UAAU,EAAE,CAAA;IAEpE,kBAAkB,GAAG,KAAK,IAAyB,EAAE,CAAC,IAAI,UAAU,EAAE,CAAA;IAEtE,gBAAgB,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAA"}
|
package/dist/storage/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type * as otel from '@opentelemetry/api';
|
|
2
|
-
import type { MutationEvent } from '../index.js';
|
|
3
|
-
import type { PreparedBindValues } from '../utils/util.js';
|
|
4
|
-
export type StorageInit = (otelProps: StorageOtelProps) => Promise<Storage> | Storage;
|
|
5
|
-
export interface Storage {
|
|
6
|
-
execute(query: string, bindValues?: PreparedBindValues, parentSpan?: otel.Span): void;
|
|
7
|
-
mutate(mutationEventEncoded: MutationEvent.Any, parentSpan?: otel.Span): void;
|
|
8
|
-
/** Return a snapshot of persisted data from the storage */
|
|
9
|
-
getPersistedData(parentSpan?: otel.Span): Promise<Uint8Array>;
|
|
10
|
-
getMutationLogData(parentSpan?: otel.Span): Promise<Uint8Array>;
|
|
11
|
-
dangerouslyReset(): Promise<void>;
|
|
12
|
-
}
|
|
13
|
-
export type StorageType = 'tauri' | 'web' | 'web-in-memory';
|
|
14
|
-
export type StorageOtelProps = {
|
|
15
|
-
otelTracer: otel.Tracer;
|
|
16
|
-
parentSpan: otel.Span;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;AAErF,MAAM,WAAW,OAAO;IAEtB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAGrF,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAE7E,2DAA2D;IAC3D,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7D,kBAAkB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAE/D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,eAAe,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAA;IACvB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAA;CACtB,CAAA"}
|
package/dist/storage/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// A storage represents a raw SQLite database.
|
|
2
|
-
// Examples include:
|
|
3
|
-
// - A native SQLite process running in a Tauri Rust process
|
|
4
|
-
// - A SQL.js WASM version of SQLite running in a web worker
|
|
5
|
-
//
|
|
6
|
-
// We can send commands to execute various kinds of queries,
|
|
7
|
-
// and respond to various events from the database.
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,oBAAoB;AACpB,4DAA4D;AAC5D,4DAA4D;AAC5D,EAAE;AACF,4DAA4D;AAC5D,mDAAmD"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type * as otel from '@opentelemetry/api';
|
|
2
|
-
import type { MutationEvent } from '../../schema/mutations.js';
|
|
3
|
-
import type { PreparedBindValues } from '../../utils/util.js';
|
|
4
|
-
import type { Storage, StorageOtelProps } from '../index.js';
|
|
5
|
-
export type StorageOptionsTauri = {
|
|
6
|
-
dbDirPath: string;
|
|
7
|
-
appDbFileName: string;
|
|
8
|
-
};
|
|
9
|
-
export declare class TauriStorage implements Storage {
|
|
10
|
-
readonly dbFilePath: string;
|
|
11
|
-
readonly dbDirPath: string;
|
|
12
|
-
readonly otelTracer: otel.Tracer;
|
|
13
|
-
readonly parentSpan: otel.Span;
|
|
14
|
-
constructor(dbFilePath: string, dbDirPath: string, otelTracer: otel.Tracer, parentSpan: otel.Span);
|
|
15
|
-
static load: ({ dbDirPath, appDbFileName }: StorageOptionsTauri) => ({ otelTracer, parentSpan }: StorageOtelProps) => Promise<TauriStorage>;
|
|
16
|
-
execute: (query: string, bindValues?: PreparedBindValues, parentSpan?: otel.Span) => void;
|
|
17
|
-
mutate: (_mutationEventEncoded: MutationEvent.Any, _parentSpan?: otel.Span | undefined) => void;
|
|
18
|
-
getPersistedData: (parentSpan?: otel.Span) => Promise<Uint8Array>;
|
|
19
|
-
getMutationLogData: () => Promise<Uint8Array>;
|
|
20
|
-
dangerouslyReset: () => Promise<void>;
|
|
21
|
-
private getOtelData;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/tauri/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,qBAAa,YAAa,YAAW,OAAO;IAExC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM;IAChC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI;gBAHrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,IAAI,CAAC,MAAM,EACvB,UAAU,EAAE,IAAI,CAAC,IAAI;IAGhC,MAAM,CAAC,IAAI,iCACsB,mBAAmB,kCACf,gBAAgB,2BAKlD;IAEH,OAAO,UAAW,MAAM,eAAe,kBAAkB,eAAe,KAAK,IAAI,KAAG,IAAI,CAQvF;IAED,MAAM,0BAA2B,cAAc,GAAG,gBAAgB,KAAK,IAAI,GAAG,SAAS,UAAO;IAE9F,gBAAgB,gBAAuB,KAAK,IAAI,KAAG,QAAQ,UAAU,CAAC,CAOrE;IAGD,kBAAkB,QAAa,QAAQ,UAAU,CAAC,CAAoB;IAEtE,gBAAgB,sBAEf;IAED,OAAO,CAAC,WAAW,CAA2E;CAC/F"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { getTraceParentHeader } from '@livestore/utils';
|
|
2
|
-
import { invoke } from '@tauri-apps/api';
|
|
3
|
-
import { prepareBindValues } from '../../utils/util.js';
|
|
4
|
-
export class TauriStorage {
|
|
5
|
-
dbFilePath;
|
|
6
|
-
dbDirPath;
|
|
7
|
-
otelTracer;
|
|
8
|
-
parentSpan;
|
|
9
|
-
constructor(dbFilePath, dbDirPath, otelTracer, parentSpan) {
|
|
10
|
-
this.dbFilePath = dbFilePath;
|
|
11
|
-
this.dbDirPath = dbDirPath;
|
|
12
|
-
this.otelTracer = otelTracer;
|
|
13
|
-
this.parentSpan = parentSpan;
|
|
14
|
-
}
|
|
15
|
-
static load = ({ dbDirPath, appDbFileName }) => async ({ otelTracer, parentSpan }) => {
|
|
16
|
-
const dbFilePath = `${dbDirPath}/${appDbFileName}`;
|
|
17
|
-
await invoke('initialize_connection', { dbName: dbFilePath, otelData: getOtelData_(parentSpan) });
|
|
18
|
-
return new TauriStorage(dbFilePath, dbDirPath, otelTracer, parentSpan);
|
|
19
|
-
};
|
|
20
|
-
execute = (query, bindValues, parentSpan) => {
|
|
21
|
-
// console.log({ query, bindValues, prepared: prepareBindValues(bindValues ?? {}, query) })
|
|
22
|
-
void invoke('execute', {
|
|
23
|
-
dbName: this.dbFilePath,
|
|
24
|
-
query,
|
|
25
|
-
values: prepareBindValues(bindValues ?? {}, query),
|
|
26
|
-
otelData: this.getOtelData(parentSpan),
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
mutate = (_mutationEventEncoded, _parentSpan) => { };
|
|
30
|
-
getPersistedData = async (parentSpan) => {
|
|
31
|
-
const headers = new Headers();
|
|
32
|
-
headers.set('traceparent', getTraceParentHeader(parentSpan ?? this.parentSpan));
|
|
33
|
-
return fetch(`http://localhost:38787/get-persisted-data?file_path=${this.dbFilePath}`, { headers }).then((response) => response.arrayBuffer().then((buffer) => new Uint8Array(buffer)));
|
|
34
|
-
};
|
|
35
|
-
// TODO
|
|
36
|
-
getMutationLogData = async () => new Uint8Array();
|
|
37
|
-
dangerouslyReset = async () => {
|
|
38
|
-
// TODO
|
|
39
|
-
};
|
|
40
|
-
getOtelData = (parentSpan) => getOtelData_(parentSpan ?? this.parentSpan);
|
|
41
|
-
}
|
|
42
|
-
const getOtelData_ = (parentSpan) => {
|
|
43
|
-
const spanContext = parentSpan?.spanContext();
|
|
44
|
-
return spanContext ? { trace_id: spanContext.traceId, span_id: spanContext.spanId } : undefined;
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=index.js.map
|