@livestore/common 0.3.2-dev.9 → 0.4.0-dev.1
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/ClientSessionLeaderThreadProxy.d.ts +2 -2
- package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
- package/dist/adapter-types.d.ts +4 -4
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/debug-info.d.ts +17 -17
- package/dist/devtools/devtools-messages-client-session.d.ts +38 -38
- package/dist/devtools/devtools-messages-common.d.ts +6 -6
- package/dist/devtools/devtools-messages-leader.d.ts +28 -28
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-leader.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +3 -1
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +21 -4
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -2
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -2
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +1 -1
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/materializer-helper.d.ts +3 -3
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +2 -2
- package/dist/materializer-helper.js.map +1 -1
- package/dist/rematerialize-from-eventlog.js +1 -1
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef.d.ts +104 -178
- package/dist/schema/EventSequenceNumber.d.ts +5 -0
- package/dist/schema/EventSequenceNumber.d.ts.map +1 -1
- package/dist/schema/EventSequenceNumber.js +7 -2
- package/dist/schema/EventSequenceNumber.js.map +1 -1
- package/dist/schema/EventSequenceNumber.test.js +2 -2
- package/dist/schema/LiveStoreEvent.d.ts +6 -5
- package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
- package/dist/schema/LiveStoreEvent.js +5 -0
- package/dist/schema/LiveStoreEvent.js.map +1 -1
- package/dist/schema/schema.d.ts +3 -0
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +3 -2
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +6 -4
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +76 -1
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts +34 -0
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-annotations.js +50 -0
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -0
- package/dist/schema/state/sqlite/column-annotations.test.d.ts +2 -0
- package/dist/schema/state/sqlite/column-annotations.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-annotations.test.js +179 -0
- package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -0
- package/dist/schema/state/sqlite/column-def.d.ts +15 -0
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-def.js +242 -0
- package/dist/schema/state/sqlite/column-def.js.map +1 -0
- package/dist/schema/state/sqlite/column-def.test.d.ts +2 -0
- package/dist/schema/state/sqlite/column-def.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-def.test.js +529 -0
- package/dist/schema/state/sqlite/column-def.test.js.map +1 -0
- package/dist/schema/state/sqlite/column-spec.d.ts +11 -0
- package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-spec.js +39 -0
- package/dist/schema/state/sqlite/column-spec.js.map +1 -0
- package/dist/schema/state/sqlite/column-spec.test.d.ts +2 -0
- package/dist/schema/state/sqlite/column-spec.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/column-spec.test.js +146 -0
- package/dist/schema/state/sqlite/column-spec.test.js.map +1 -0
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +1 -0
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -0
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +17 -4
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +2 -0
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +65 -165
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -0
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +2 -0
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +2 -0
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +309 -560
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +1 -0
- package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/astToSql.js +8 -6
- package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +464 -46
- package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.d.ts +159 -152
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +45 -6
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.d.ts +2 -0
- package/dist/schema/state/sqlite/table-def.test.d.ts.map +1 -0
- package/dist/schema/state/sqlite/table-def.test.js +192 -0
- package/dist/schema/state/sqlite/table-def.test.js.map +1 -0
- package/dist/schema-management/common.d.ts +1 -1
- package/dist/schema-management/common.d.ts.map +1 -1
- package/dist/schema-management/common.js +11 -2
- package/dist/schema-management/common.js.map +1 -1
- package/dist/schema-management/migrations.d.ts +0 -1
- package/dist/schema-management/migrations.d.ts.map +1 -1
- package/dist/schema-management/migrations.js +4 -30
- package/dist/schema-management/migrations.js.map +1 -1
- package/dist/schema-management/migrations.test.d.ts +2 -0
- package/dist/schema-management/migrations.test.d.ts.map +1 -0
- package/dist/schema-management/migrations.test.js +52 -0
- package/dist/schema-management/migrations.test.js.map +1 -0
- package/dist/sql-queries/types.d.ts +37 -133
- package/dist/sqlite-db-helper.d.ts +3 -1
- package/dist/sqlite-db-helper.d.ts.map +1 -1
- package/dist/sqlite-db-helper.js +16 -0
- package/dist/sqlite-db-helper.js.map +1 -1
- package/dist/sqlite-types.d.ts +4 -4
- package/dist/sqlite-types.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +2 -2
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +8 -7
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/util.d.ts +3 -3
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/src/ClientSessionLeaderThreadProxy.ts +2 -2
- package/src/adapter-types.ts +6 -4
- package/src/devtools/devtools-messages-leader.ts +3 -3
- package/src/leader-thread/LeaderSyncProcessor.ts +3 -1
- package/src/leader-thread/make-leader-thread-layer.ts +26 -7
- package/src/leader-thread/shutdown-channel.ts +2 -2
- package/src/leader-thread/types.ts +1 -1
- package/src/materializer-helper.ts +5 -11
- package/src/rematerialize-from-eventlog.ts +2 -2
- package/src/schema/EventSequenceNumber.test.ts +2 -2
- package/src/schema/EventSequenceNumber.ts +8 -2
- package/src/schema/LiveStoreEvent.ts +7 -1
- package/src/schema/schema.ts +4 -0
- package/src/schema/state/sqlite/client-document-def.test.ts +89 -1
- package/src/schema/state/sqlite/client-document-def.ts +7 -4
- package/src/schema/state/sqlite/column-annotations.test.ts +212 -0
- package/src/schema/state/sqlite/column-annotations.ts +77 -0
- package/src/schema/state/sqlite/column-def.test.ts +665 -0
- package/src/schema/state/sqlite/column-def.ts +290 -0
- package/src/schema/state/sqlite/column-spec.test.ts +223 -0
- package/src/schema/state/sqlite/column-spec.ts +42 -0
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +2 -0
- package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +15 -0
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +20 -2
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +1 -0
- package/src/schema/state/sqlite/mod.ts +2 -0
- package/src/schema/state/sqlite/query-builder/api.ts +4 -3
- package/src/schema/state/sqlite/query-builder/astToSql.ts +9 -7
- package/src/schema/state/sqlite/table-def.test.ts +241 -0
- package/src/schema/state/sqlite/table-def.ts +222 -16
- package/src/schema-management/common.ts +10 -3
- package/src/schema-management/migrations.ts +4 -33
- package/src/sqlite-db-helper.ts +19 -1
- package/src/sqlite-types.ts +4 -4
- package/src/sync/ClientSessionSyncProcessor.ts +13 -8
- package/src/sync/sync.ts +2 -0
- package/src/util.ts +7 -2
- package/src/version.ts +1 -1
@@ -0,0 +1,192 @@
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
2
|
+
import { describe, expect, it } from 'vitest';
|
3
|
+
import { State } from "../../mod.js";
|
4
|
+
describe('table function overloads', () => {
|
5
|
+
it('should extract table name from title annotation', () => {
|
6
|
+
const TodoSchema = Schema.Struct({
|
7
|
+
id: Schema.String,
|
8
|
+
text: Schema.String,
|
9
|
+
completed: Schema.Boolean,
|
10
|
+
}).annotations({ title: 'todos' });
|
11
|
+
const todosTable = State.SQLite.table({
|
12
|
+
schema: TodoSchema,
|
13
|
+
});
|
14
|
+
expect(todosTable.sqliteDef.name).toBe('todos');
|
15
|
+
});
|
16
|
+
it('should extract table name from identifier annotation', () => {
|
17
|
+
const TodoSchema = Schema.Struct({
|
18
|
+
id: Schema.String,
|
19
|
+
text: Schema.String,
|
20
|
+
completed: Schema.Boolean,
|
21
|
+
}).annotations({ identifier: 'TodoItem' });
|
22
|
+
const todosTable = State.SQLite.table({ schema: TodoSchema });
|
23
|
+
expect(todosTable.sqliteDef.name).toBe('TodoItem');
|
24
|
+
});
|
25
|
+
it('should prefer title over identifier annotation', () => {
|
26
|
+
const TodoSchema = Schema.Struct({
|
27
|
+
id: Schema.String,
|
28
|
+
text: Schema.String,
|
29
|
+
completed: Schema.Boolean,
|
30
|
+
}).annotations({
|
31
|
+
title: 'todos',
|
32
|
+
identifier: 'TodoItem',
|
33
|
+
});
|
34
|
+
const todosTable = State.SQLite.table({ schema: TodoSchema });
|
35
|
+
expect(todosTable.sqliteDef.name).toBe('todos');
|
36
|
+
});
|
37
|
+
it('should throw when schema has no name, title, or identifier', () => {
|
38
|
+
const TodoSchema = Schema.Struct({
|
39
|
+
id: Schema.String,
|
40
|
+
text: Schema.String,
|
41
|
+
completed: Schema.Boolean,
|
42
|
+
});
|
43
|
+
expect(() => State.SQLite.table({ schema: TodoSchema })).toThrow('When using schema without explicit name, the schema must have a title or identifier annotation');
|
44
|
+
});
|
45
|
+
it('should work with columns parameter', () => {
|
46
|
+
const todosTable = State.SQLite.table({
|
47
|
+
name: 'todos',
|
48
|
+
columns: {
|
49
|
+
id: State.SQLite.text({ primaryKey: true }),
|
50
|
+
text: State.SQLite.text({ default: '' }),
|
51
|
+
completed: State.SQLite.boolean({ default: false }),
|
52
|
+
optionalComplex: State.SQLite.json({
|
53
|
+
nullable: true,
|
54
|
+
schema: Schema.Struct({ color: Schema.String }).pipe(Schema.UndefinedOr),
|
55
|
+
}),
|
56
|
+
},
|
57
|
+
});
|
58
|
+
expect(todosTable.rowSchema.fields.completed.toString()).toMatchInlineSnapshot(`"(number <-> boolean)"`);
|
59
|
+
expect(todosTable.sqliteDef.name).toBe('todos');
|
60
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('id');
|
61
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('text');
|
62
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('completed');
|
63
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('optionalComplex');
|
64
|
+
expect(todosTable.sqliteDef.columns.optionalComplex.nullable).toBe(true);
|
65
|
+
expect(todosTable.rowSchema.fields.optionalComplex.toString()).toBe('(parseJson <-> { readonly color: string } | undefined) | null');
|
66
|
+
});
|
67
|
+
it('should work with schema parameter', () => {
|
68
|
+
const TodoSchema = Schema.Struct({
|
69
|
+
id: Schema.String,
|
70
|
+
text: Schema.String,
|
71
|
+
completed: Schema.Boolean,
|
72
|
+
});
|
73
|
+
const todosTable = State.SQLite.table({
|
74
|
+
name: 'todos',
|
75
|
+
schema: TodoSchema,
|
76
|
+
});
|
77
|
+
expect(todosTable.sqliteDef.name).toBe('todos');
|
78
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('id');
|
79
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('text');
|
80
|
+
expect(todosTable.sqliteDef.columns).toHaveProperty('completed');
|
81
|
+
});
|
82
|
+
it('should work with single column', () => {
|
83
|
+
const simpleTable = State.SQLite.table({
|
84
|
+
name: 'simple',
|
85
|
+
columns: State.SQLite.text({ primaryKey: true }),
|
86
|
+
});
|
87
|
+
expect(simpleTable.sqliteDef.name).toBe('simple');
|
88
|
+
expect(simpleTable.sqliteDef.columns).toHaveProperty('value');
|
89
|
+
expect(simpleTable.sqliteDef.columns.value.primaryKey).toBe(true);
|
90
|
+
});
|
91
|
+
it('should handle optional fields in schema', () => {
|
92
|
+
const UserSchema = Schema.Struct({
|
93
|
+
id: Schema.String,
|
94
|
+
name: Schema.String,
|
95
|
+
email: Schema.optional(Schema.String),
|
96
|
+
});
|
97
|
+
const userTable = State.SQLite.table({
|
98
|
+
name: 'users',
|
99
|
+
schema: UserSchema,
|
100
|
+
});
|
101
|
+
expect(userTable.sqliteDef.columns.id.nullable).toBe(false);
|
102
|
+
expect(userTable.sqliteDef.columns.name.nullable).toBe(false);
|
103
|
+
expect(userTable.sqliteDef.columns.email.nullable).toBe(true);
|
104
|
+
});
|
105
|
+
it('should handle Schema.Int as integer column', () => {
|
106
|
+
const CounterSchema = Schema.Struct({
|
107
|
+
id: Schema.String,
|
108
|
+
count: Schema.Int,
|
109
|
+
});
|
110
|
+
const counterTable = State.SQLite.table({
|
111
|
+
name: 'counters',
|
112
|
+
schema: CounterSchema,
|
113
|
+
});
|
114
|
+
expect(counterTable.sqliteDef.columns.count.columnType).toBe('integer');
|
115
|
+
});
|
116
|
+
it('should work with Schema.Class', () => {
|
117
|
+
class User extends Schema.Class('User')({
|
118
|
+
id: Schema.String,
|
119
|
+
name: Schema.String,
|
120
|
+
email: Schema.optional(Schema.String),
|
121
|
+
age: Schema.Int,
|
122
|
+
}) {
|
123
|
+
}
|
124
|
+
const userTable = State.SQLite.table({
|
125
|
+
name: 'users',
|
126
|
+
schema: User,
|
127
|
+
});
|
128
|
+
expect(userTable.sqliteDef.name).toBe('users');
|
129
|
+
expect(userTable.sqliteDef.columns).toHaveProperty('id');
|
130
|
+
expect(userTable.sqliteDef.columns).toHaveProperty('name');
|
131
|
+
expect(userTable.sqliteDef.columns).toHaveProperty('email');
|
132
|
+
expect(userTable.sqliteDef.columns).toHaveProperty('age');
|
133
|
+
// Check column types
|
134
|
+
expect(userTable.sqliteDef.columns.id.columnType).toBe('text');
|
135
|
+
expect(userTable.sqliteDef.columns.name.columnType).toBe('text');
|
136
|
+
expect(userTable.sqliteDef.columns.email.columnType).toBe('text');
|
137
|
+
expect(userTable.sqliteDef.columns.email.nullable).toBe(true);
|
138
|
+
expect(userTable.sqliteDef.columns.age.columnType).toBe('integer');
|
139
|
+
});
|
140
|
+
it('should extract table name from Schema.Class identifier', () => {
|
141
|
+
class TodoItem extends Schema.Class('TodoItem')({
|
142
|
+
id: Schema.String,
|
143
|
+
text: Schema.String,
|
144
|
+
completed: Schema.Boolean,
|
145
|
+
}) {
|
146
|
+
}
|
147
|
+
// Schema.Class doesn't set identifier/title annotations, so we need to provide an explicit name
|
148
|
+
const todosTable = State.SQLite.table({
|
149
|
+
name: 'TodoItem',
|
150
|
+
schema: TodoItem,
|
151
|
+
});
|
152
|
+
expect(todosTable.sqliteDef.name).toBe('TodoItem');
|
153
|
+
});
|
154
|
+
it('should properly infer types from schema', () => {
|
155
|
+
const UserSchema = Schema.Struct({
|
156
|
+
id: Schema.String,
|
157
|
+
name: Schema.String,
|
158
|
+
age: Schema.Int,
|
159
|
+
active: Schema.Boolean,
|
160
|
+
metadata: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
|
161
|
+
});
|
162
|
+
const userTable = State.SQLite.table({
|
163
|
+
name: 'users',
|
164
|
+
schema: UserSchema,
|
165
|
+
});
|
166
|
+
const _userTypeCheck = {
|
167
|
+
id: 'test-id',
|
168
|
+
name: 'John',
|
169
|
+
age: 30,
|
170
|
+
active: true,
|
171
|
+
metadata: { key1: 'value1', key2: 123 },
|
172
|
+
};
|
173
|
+
// Should derive proper column schema
|
174
|
+
expect(userTable.rowSchema.fields.age.toString()).toMatchInlineSnapshot(`"number"`);
|
175
|
+
expect(userTable.rowSchema.fields.active.toString()).toMatchInlineSnapshot(`"(number <-> boolean)"`);
|
176
|
+
expect(userTable.rowSchema.fields.metadata.toString()).toMatchInlineSnapshot(`"(parseJson <-> { readonly [x: string]: unknown } | undefined)"`);
|
177
|
+
// These should compile without errors
|
178
|
+
const _idCheck = 'string';
|
179
|
+
const _nameCheck = 'string';
|
180
|
+
const _ageCheck = 123;
|
181
|
+
const _activeCheck = true;
|
182
|
+
const _metadataCheck = { foo: 'bar' };
|
183
|
+
// Verify column definitions
|
184
|
+
expect(userTable.sqliteDef.columns.id.columnType).toBe('text');
|
185
|
+
expect(userTable.sqliteDef.columns.name.columnType).toBe('text');
|
186
|
+
expect(userTable.sqliteDef.columns.age.columnType).toBe('integer');
|
187
|
+
expect(userTable.sqliteDef.columns.active.columnType).toBe('integer');
|
188
|
+
expect(userTable.sqliteDef.columns.metadata.columnType).toBe('text');
|
189
|
+
expect(userTable.sqliteDef.columns.metadata.nullable).toBe(true);
|
190
|
+
});
|
191
|
+
});
|
192
|
+
//# sourceMappingURL=table-def.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/table-def.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAElC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,MAAM,EAAE,UAAU;SACnB,CAAC,CAAA;QAEF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QAE7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC,WAAW,CAAC;YACb,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QAE7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAC9D,gGAAgG,CACjG,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBACxC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnD,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjC,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;iBACzE,CAAC;aACH;SACF,CAAC,CAAA;QAEF,MAAM,CAAE,UAAU,CAAC,SAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAA;QACjH,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAChE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QACtE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxE,MAAM,CAAE,UAAU,CAAC,SAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC1E,+DAA+D,CAChE,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,UAAU;SACnB,CAAC,CAAA;QAEF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SACjD,CAAC,CAAA;QAEF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC7D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;SACtC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,UAAU;SACnB,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,KAAK,EAAE,MAAM,CAAC,GAAG;SAClB,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAA;QAEF,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAK,SAAQ,MAAM,CAAC,KAAK,CAAO,MAAM,CAAC,CAAC;YAC5C,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;SAAG;QAEL,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAEzD,qBAAqB;QACrB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;YACxD,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC;SAAG;QAEL,gGAAgG;QAChG,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;SACxF,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,UAAU;SACnB,CAAC,CAAA;QAIF,MAAM,cAAc,GAAa;YAC/B,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;SACxC,CAAA;QASD,qCAAqC;QACrC,MAAM,CAAE,SAAS,CAAC,SAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QAC5F,MAAM,CAAE,SAAS,CAAC,SAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAA;QAC7G,MAAM,CAAE,SAAS,CAAC,SAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CACnF,iEAAiE,CAClE,CAAA;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAA+B,QAAQ,CAAA;QACrD,MAAM,UAAU,GAAiC,QAAQ,CAAA;QACzD,MAAM,SAAS,GAAgC,GAAG,CAAA;QAClD,MAAM,YAAY,GAAmC,IAAI,CAAA;QACzD,MAAM,cAAc,GAAqC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;QAEvE,4BAA4B;QAC5B,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type
|
1
|
+
import { type SqliteDb } from '../adapter-types.ts';
|
2
2
|
import type { ParamsObject } from '../util.ts';
|
3
3
|
export declare const dbExecute: (db: SqliteDb, queryStr: string, bindValues?: ParamsObject) => void;
|
4
4
|
export declare const dbSelect: <T>(db: SqliteDb, queryStr: string, bindValues?: ParamsObject) => readonly T[];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,GAAI,IAAI,QAAQ,EAAE,UAAU,MAAM,EAAE,aAAa,YAAY,SAmBlF,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,UAAU,MAAM,EAAE,aAAa,YAAY,iBAUpF,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,aAAa,CAAC,YAAY,CAAC,CAAA;IAEnD,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;CACtD;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { SqliteError } from "../adapter-types.js";
|
1
2
|
import { prepareBindValues } from "../util.js";
|
2
3
|
// TODO bring back statement caching
|
3
4
|
// will require proper scope-aware cleanup etc (for testing and apps with multiple LiveStore instances)
|
@@ -9,8 +10,16 @@ export const dbExecute = (db, queryStr, bindValues) => {
|
|
9
10
|
// cachedStmts.set(queryStr, stmt)
|
10
11
|
// }
|
11
12
|
const preparedBindValues = bindValues ? prepareBindValues(bindValues, queryStr) : undefined;
|
12
|
-
|
13
|
-
|
13
|
+
try {
|
14
|
+
stmt.execute(preparedBindValues);
|
15
|
+
stmt.finalize();
|
16
|
+
}
|
17
|
+
catch (cause) {
|
18
|
+
throw new SqliteError({
|
19
|
+
cause,
|
20
|
+
query: { sql: queryStr, bindValues: preparedBindValues ?? {} },
|
21
|
+
});
|
22
|
+
}
|
14
23
|
};
|
15
24
|
export const dbSelect = (db, queryStr, bindValues) => {
|
16
25
|
// let stmt = cachedStmts.get(queryStr)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,oCAAoC;AACpC,uGAAuG;AACvG,2DAA2D;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAY,EAAE,QAAgB,EAAE,UAAyB,EAAE,EAAE;IACrF,uCAAuC;IACvC,eAAe;IACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACjC,kCAAkC;IAClC,IAAI;IAEJ,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE3F,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAEhC,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC;YACpB,KAAK;YACL,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,IAAI,EAAE,EAAE;SAC/D,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAY,EAAE,QAAgB,EAAE,UAAyB,EAAE,EAAE;IACvF,uCAAuC;IACvC,eAAe;IACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACjC,kCAAkC;IAClC,IAAI;IAEJ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5F,IAAI,CAAC,QAAQ,EAAE,CAAA;IACf,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
@@ -21,5 +21,4 @@ export declare const migrateTable: ({ db, tableAst, schemaHash, behaviour, skipM
|
|
21
21
|
behaviour: "drop-and-recreate" | "create-if-not-exists";
|
22
22
|
skipMetaTable?: boolean;
|
23
23
|
}) => Effect.Effect<void, never, never>;
|
24
|
-
export declare const makeColumnSpec: (tableAst: SqliteAst.Table) => string;
|
25
24
|
//# sourceMappingURL=migrations.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAUnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,iBAAiB,GAAI,IAAI,QAAQ,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAuBxE,CAAA;AAGJ,eAAO,MAAM,SAAS,GAAI,6BAIvB;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC5E,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CA2D/C,CAAA;AAEJ,eAAO,MAAM,YAAY,GAAI,yDAM1B;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,GAAG,sBAAsB,CAAA;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,sCAqCE,CAAA"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { memoizeByStringifyArgs } from '@livestore/utils';
|
2
|
-
import { Effect
|
3
|
-
import {
|
2
|
+
import { Effect } from '@livestore/utils/effect';
|
3
|
+
import { makeColumnSpec } from "../schema/state/sqlite/column-spec.js";
|
4
|
+
import { SqliteAst } from "../schema/state/sqlite/db-schema/mod.js";
|
4
5
|
import { isStateSystemTable, SCHEMA_EVENT_DEFS_META_TABLE, SCHEMA_META_TABLE, schemaEventDefsMetaTable, stateSystemTables, } from "../schema/state/sqlite/system-tables.js";
|
5
6
|
import { sql } from "../util.js";
|
6
7
|
import { dbExecute, dbSelect } from "./common.js";
|
@@ -98,33 +99,6 @@ export const migrateTable = ({ db, tableAst, schemaHash = SqliteAst.hash(tableAs
|
|
98
99
|
}));
|
99
100
|
const createIndexFromDefinition = (tableName, index) => {
|
100
101
|
const uniqueStr = index.unique ? 'UNIQUE' : '';
|
101
|
-
return sql `create ${uniqueStr} index if not exists '${index.name}' on '${tableName}' (${index.columns.join(', ')})`;
|
102
|
-
};
|
103
|
-
export const makeColumnSpec = (tableAst) => {
|
104
|
-
const primaryKeys = tableAst.columns.filter((_) => _.primaryKey).map((_) => `'${_.name}'`);
|
105
|
-
const columnDefStrs = tableAst.columns.map(toSqliteColumnSpec);
|
106
|
-
if (primaryKeys.length > 0) {
|
107
|
-
columnDefStrs.push(`PRIMARY KEY (${primaryKeys.join(', ')})`);
|
108
|
-
}
|
109
|
-
return columnDefStrs.join(', ');
|
110
|
-
};
|
111
|
-
/** NOTE primary keys are applied on a table level not on a column level to account for multi-column primary keys */
|
112
|
-
const toSqliteColumnSpec = (column) => {
|
113
|
-
const columnTypeStr = column.type._tag;
|
114
|
-
const nullableStr = column.nullable === false ? 'not null' : '';
|
115
|
-
const defaultValueStr = (() => {
|
116
|
-
if (column.default._tag === 'None')
|
117
|
-
return '';
|
118
|
-
if (column.default.value === null)
|
119
|
-
return 'default null';
|
120
|
-
if (SqliteDsl.isSqlDefaultValue(column.default.value))
|
121
|
-
return `default ${column.default.value.sql}`;
|
122
|
-
const encodeValue = EffectSchema.encodeSync(column.schema);
|
123
|
-
const encodedDefaultValue = encodeValue(column.default.value);
|
124
|
-
if (columnTypeStr === 'text')
|
125
|
-
return `default '${encodedDefaultValue}'`;
|
126
|
-
return `default ${encodedDefaultValue}`;
|
127
|
-
})();
|
128
|
-
return `'${column.name}' ${columnTypeStr} ${nullableStr} ${defaultValueStr}`;
|
102
|
+
return sql `create ${uniqueStr} index if not exists '${index.name}' on '${tableName}' (${index.columns.map((col) => `'${col}'`).join(', ')})`;
|
129
103
|
};
|
130
104
|
//# sourceMappingURL=migrations.js.map
|
@@ -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,EAAE,MAAM,
|
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":"migrations.test.d.ts","sourceRoot":"","sources":["../../src/schema-management/migrations.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { Option, Schema } from '@livestore/utils/effect';
|
2
|
+
import { describe, expect, it } from 'vitest';
|
3
|
+
import { makeColumnSpec } from './migrations.js';
|
4
|
+
const createColumn = (name, type, options = {}) => ({
|
5
|
+
_tag: 'column',
|
6
|
+
name,
|
7
|
+
type: { _tag: type },
|
8
|
+
nullable: options.nullable ?? true,
|
9
|
+
primaryKey: options.primaryKey ?? false,
|
10
|
+
default: Option.none(),
|
11
|
+
schema: type === 'text' ? Schema.String : Schema.Number,
|
12
|
+
});
|
13
|
+
describe('makeColumnSpec', () => {
|
14
|
+
it('should quote column names properly for reserved keywords', () => {
|
15
|
+
const table = {
|
16
|
+
_tag: 'table',
|
17
|
+
name: 'blocks',
|
18
|
+
columns: [createColumn('order', 'integer', { nullable: false }), createColumn('group', 'text')],
|
19
|
+
indexes: [],
|
20
|
+
};
|
21
|
+
const result = makeColumnSpec(table);
|
22
|
+
expect(result).toMatchInlineSnapshot(`"'order' integer not null , 'group' text "`);
|
23
|
+
expect(result).toContain("'order'");
|
24
|
+
expect(result).toContain("'group'");
|
25
|
+
});
|
26
|
+
it('should handle basic columns with primary keys', () => {
|
27
|
+
const table = {
|
28
|
+
_tag: 'table',
|
29
|
+
name: 'users',
|
30
|
+
columns: [createColumn('id', 'text', { nullable: false, primaryKey: true }), createColumn('name', 'text')],
|
31
|
+
indexes: [],
|
32
|
+
};
|
33
|
+
const result = makeColumnSpec(table);
|
34
|
+
expect(result).toMatchInlineSnapshot(`"'id' text not null , 'name' text , PRIMARY KEY ('id')"`);
|
35
|
+
expect(result).toContain("PRIMARY KEY ('id')");
|
36
|
+
});
|
37
|
+
it('should handle multi-column primary keys', () => {
|
38
|
+
const table = {
|
39
|
+
_tag: 'table',
|
40
|
+
name: 'composite',
|
41
|
+
columns: [
|
42
|
+
createColumn('tenant_id', 'text', { nullable: false, primaryKey: true }),
|
43
|
+
createColumn('user_id', 'text', { nullable: false, primaryKey: true }),
|
44
|
+
],
|
45
|
+
indexes: [],
|
46
|
+
};
|
47
|
+
const result = makeColumnSpec(table);
|
48
|
+
expect(result).toMatchInlineSnapshot(`"'tenant_id' text not null , 'user_id' text not null , PRIMARY KEY ('tenant_id', 'user_id')"`);
|
49
|
+
expect(result).toContain("PRIMARY KEY ('tenant_id', 'user_id')");
|
50
|
+
});
|
51
|
+
});
|
52
|
+
//# sourceMappingURL=migrations.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrations.test.js","sourceRoot":"","sources":["../../src/schema-management/migrations.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,147 +1,51 @@
|
|
1
|
-
import type {
|
2
|
-
import type {
|
3
|
-
import type { SqliteDsl } from
|
4
|
-
export type DecodedValuesForTableAll<
|
5
|
-
|
6
|
-
|
7
|
-
> =
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
export type DecodedValuesForTablePretty<
|
13
|
-
TSchema extends SqliteDsl.DbSchema,
|
14
|
-
TTableName extends keyof TSchema,
|
15
|
-
> = Prettify<DecodedValuesForTable<TSchema, TTableName>>;
|
16
|
-
export type DecodedValuesForTable<
|
17
|
-
TSchema extends SqliteDsl.DbSchema,
|
18
|
-
TTableName extends keyof TSchema,
|
19
|
-
> = Partial<
|
20
|
-
Pick<
|
21
|
-
DecodedValuesForTableAll<TSchema, TTableName>,
|
22
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
23
|
-
>
|
24
|
-
> &
|
25
|
-
Omit<
|
26
|
-
DecodedValuesForTableAll<TSchema, TTableName>,
|
27
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
28
|
-
>;
|
29
|
-
export type DecodedValuesForTableOrNull<
|
30
|
-
TSchema extends SqliteDsl.DbSchema,
|
31
|
-
TTableName extends keyof TSchema,
|
32
|
-
> = NullableObj<
|
33
|
-
Pick<
|
34
|
-
DecodedValuesForTableAll<TSchema, TTableName>,
|
35
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
36
|
-
>
|
37
|
-
> &
|
38
|
-
Omit<
|
39
|
-
DecodedValuesForTableAll<TSchema, TTableName>,
|
40
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
41
|
-
>;
|
42
|
-
export type WhereValuesForTable<
|
43
|
-
TSchema extends SqliteDsl.DbSchema,
|
44
|
-
TTableName extends keyof TSchema,
|
45
|
-
> = PartialOrNull<{
|
46
|
-
[K in keyof DecodedValuesForTableAll<
|
47
|
-
TSchema,
|
48
|
-
TTableName
|
49
|
-
>]: WhereValueForDecoded<DecodedValuesForTableAll<TSchema, TTableName>[K]>;
|
1
|
+
import type { Prettify } from '@livestore/utils';
|
2
|
+
import type { Schema } from '@livestore/utils/effect';
|
3
|
+
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts';
|
4
|
+
export type DecodedValuesForTableAll<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = {
|
5
|
+
[K in keyof GetColumns<TSchema, TTableName>]: Schema.Schema.Type<GetColumn<TSchema, TTableName, K>['schema']>;
|
6
|
+
};
|
7
|
+
export type DecodedValuesForTablePretty<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = Prettify<DecodedValuesForTable<TSchema, TTableName>>;
|
8
|
+
export type DecodedValuesForTable<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = Partial<Pick<DecodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>> & Omit<DecodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>;
|
9
|
+
export type DecodedValuesForTableOrNull<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = NullableObj<Pick<DecodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>> & Omit<DecodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>;
|
10
|
+
export type WhereValuesForTable<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = PartialOrNull<{
|
11
|
+
[K in keyof DecodedValuesForTableAll<TSchema, TTableName>]: WhereValueForDecoded<DecodedValuesForTableAll<TSchema, TTableName>[K]>;
|
50
12
|
}>;
|
51
|
-
export type WhereValueForDecoded<TDecoded> =
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
val: TDecoded[];
|
60
|
-
};
|
61
|
-
export type WhereOp = ">" | "<" | "=";
|
13
|
+
export type WhereValueForDecoded<TDecoded> = TDecoded | {
|
14
|
+
op: WhereOp;
|
15
|
+
val: TDecoded;
|
16
|
+
} | {
|
17
|
+
op: 'in';
|
18
|
+
val: TDecoded[];
|
19
|
+
};
|
20
|
+
export type WhereOp = '>' | '<' | '=';
|
62
21
|
export declare const isValidWhereOp: (op: string) => op is WhereOp;
|
63
|
-
export type EncodedValuesForTableAll<
|
64
|
-
|
65
|
-
TTableName extends keyof TSchema,
|
66
|
-
> = {
|
67
|
-
[K in keyof GetColumns<TSchema, TTableName>]: Schema.Schema.Type<
|
68
|
-
GetColumn<TSchema, TTableName, K>["schema"]
|
69
|
-
>;
|
22
|
+
export type EncodedValuesForTableAll<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = {
|
23
|
+
[K in keyof GetColumns<TSchema, TTableName>]: Schema.Schema.Type<GetColumn<TSchema, TTableName, K>['schema']>;
|
70
24
|
};
|
71
|
-
export type EncodedValuesForTable<
|
72
|
-
|
73
|
-
|
74
|
-
> = Partial<
|
75
|
-
Pick<
|
76
|
-
EncodedValuesForTableAll<TSchema, TTableName>,
|
77
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
78
|
-
>
|
79
|
-
> &
|
80
|
-
Omit<
|
81
|
-
EncodedValuesForTableAll<TSchema, TTableName>,
|
82
|
-
GetNullableColumnNamesForTable<TSchema, TTableName>
|
83
|
-
>;
|
84
|
-
export type GetNullableColumnNamesForTable<
|
85
|
-
TSchema extends SqliteDsl.DbSchema,
|
86
|
-
TTableName extends keyof TSchema,
|
87
|
-
> = keyof {
|
88
|
-
[K in keyof GetColumns<TSchema, TTableName> as GetColumn<
|
89
|
-
TSchema,
|
90
|
-
TTableName,
|
91
|
-
K
|
92
|
-
>["nullable"] extends true
|
93
|
-
? K
|
94
|
-
: never]: {};
|
25
|
+
export type EncodedValuesForTable<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = Partial<Pick<EncodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>> & Omit<EncodedValuesForTableAll<TSchema, TTableName>, GetNullableColumnNamesForTable<TSchema, TTableName>>;
|
26
|
+
export type GetNullableColumnNamesForTable<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = keyof {
|
27
|
+
[K in keyof GetColumns<TSchema, TTableName> as GetColumn<TSchema, TTableName, K>['nullable'] extends true ? K : never]: {};
|
95
28
|
};
|
96
|
-
export type GetColumns<
|
97
|
-
|
98
|
-
TTableName extends keyof TSchema,
|
99
|
-
> = TSchema[TTableName]["columns"];
|
100
|
-
export type GetColumn<
|
101
|
-
TSchema extends SqliteDsl.DbSchema,
|
102
|
-
TTableName extends keyof TSchema,
|
103
|
-
TColumnName extends keyof TSchema[TTableName]["columns"],
|
104
|
-
> = TSchema[TTableName]["columns"][TColumnName];
|
29
|
+
export type GetColumns<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = TSchema[TTableName]['columns'];
|
30
|
+
export type GetColumn<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema, TColumnName extends keyof TSchema[TTableName]['columns']> = TSchema[TTableName]['columns'][TColumnName];
|
105
31
|
export type DecodedValuesForColumnsAll<TColumns extends SqliteDsl.Columns> = {
|
106
|
-
|
32
|
+
[K in keyof TColumns]: Schema.Schema.Type<TColumns[K]['schema']>;
|
107
33
|
};
|
108
|
-
export type DecodedValuesForColumns<TColumns extends SqliteDsl.Columns> =
|
109
|
-
Partial<
|
110
|
-
Pick<DecodedValuesForColumnsAll<TColumns>, GetNullableColumnNames<TColumns>>
|
111
|
-
> &
|
112
|
-
Omit<
|
113
|
-
DecodedValuesForColumnsAll<TColumns>,
|
114
|
-
GetNullableColumnNames<TColumns>
|
115
|
-
>;
|
34
|
+
export type DecodedValuesForColumns<TColumns extends SqliteDsl.Columns> = Partial<Pick<DecodedValuesForColumnsAll<TColumns>, GetNullableColumnNames<TColumns>>> & Omit<DecodedValuesForColumnsAll<TColumns>, GetNullableColumnNames<TColumns>>;
|
116
35
|
export type EncodedValuesForColumnsAll<TColumns extends SqliteDsl.Columns> = {
|
117
|
-
|
36
|
+
[K in keyof TColumns]: Schema.Schema.Encoded<TColumns[K]['schema']>;
|
118
37
|
};
|
119
|
-
export type EncodedValuesForColumns<TColumns extends SqliteDsl.Columns> =
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
Omit<
|
124
|
-
EncodedValuesForColumnsAll<TColumns>,
|
125
|
-
GetNullableColumnNames<TColumns>
|
126
|
-
>;
|
127
|
-
export type WhereValuesForColumns<TColumns extends SqliteDsl.Columns> =
|
128
|
-
PartialOrNull<{
|
129
|
-
[K in keyof EncodedValuesForColumns<TColumns>]: WhereValueForDecoded<
|
130
|
-
DecodedValuesForColumnsAll<TColumns>[K]
|
131
|
-
>;
|
132
|
-
}>;
|
38
|
+
export type EncodedValuesForColumns<TColumns extends SqliteDsl.Columns> = Partial<Pick<EncodedValuesForColumnsAll<TColumns>, GetNullableColumnNames<TColumns>>> & Omit<EncodedValuesForColumnsAll<TColumns>, GetNullableColumnNames<TColumns>>;
|
39
|
+
export type WhereValuesForColumns<TColumns extends SqliteDsl.Columns> = PartialOrNull<{
|
40
|
+
[K in keyof EncodedValuesForColumns<TColumns>]: WhereValueForDecoded<DecodedValuesForColumnsAll<TColumns>[K]>;
|
41
|
+
}>;
|
133
42
|
export type GetNullableColumnNames<TColumns extends SqliteDsl.Columns> = keyof {
|
134
|
-
|
135
|
-
any,
|
136
|
-
true
|
137
|
-
>
|
138
|
-
? K
|
139
|
-
: never]: unknown;
|
43
|
+
[K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: unknown;
|
140
44
|
};
|
141
45
|
export type PartialOrNull<T> = {
|
142
|
-
|
46
|
+
[P in keyof T]?: T[P] | null;
|
143
47
|
};
|
144
48
|
export type NullableObj<T> = {
|
145
|
-
|
49
|
+
[P in keyof T]: T[P] | null;
|
146
50
|
};
|
147
|
-
//# sourceMappingURL=types.d.ts.map
|
51
|
+
//# sourceMappingURL=types.d.ts.map
|
@@ -1,7 +1,9 @@
|
|
1
|
-
import type
|
1
|
+
import { type SqliteDb } from './adapter-types.ts';
|
2
2
|
import type { PreparedBindValues } from './util.ts';
|
3
3
|
export declare const makeExecute: (execute: (queryStr: string, bindValues: PreparedBindValues | undefined, options?: {
|
4
4
|
onRowsChanged?: (rowsChanged: number) => void;
|
5
5
|
}) => void) => SqliteDb["execute"];
|
6
6
|
export declare const makeSelect: <T>(select: (queryStr: string, bindValues: PreparedBindValues | undefined) => ReadonlyArray<T>) => SqliteDb["select"];
|
7
|
+
export declare const validateSnapshot: (snapshot: Uint8Array) => void;
|
8
|
+
export declare const makeExport: (exportFn: () => Uint8Array<ArrayBuffer>) => () => Uint8Array<ArrayBuffer>;
|
7
9
|
//# sourceMappingURL=sqlite-db-helper.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sqlite-db-helper.d.ts","sourceRoot":"","sources":["../src/sqlite-db-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"sqlite-db-helper.d.ts","sourceRoot":"","sources":["../src/sqlite-db-helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,WAAW,GACtB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,KACxD,IAAI,KACR,QAAQ,CAAC,SAAS,CAWpB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,KACzF,QAAQ,CAAC,QAAQ,CAanB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,UAAU,SAUpD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,UAAU,CAAC,WAAW,CAAC,kCAIjE,CAAA"}
|