@livestore/sqlite-wasm 0.3.0-dev.11 → 0.3.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/browser/mod.d.ts +7 -7
- package/dist/browser/mod.d.ts.map +1 -1
- package/dist/browser/mod.js +4 -4
- package/dist/browser/mod.js.map +1 -1
- package/dist/index_.d.ts +1 -1
- package/dist/index_.d.ts.map +1 -1
- package/dist/index_.js +1 -1
- package/dist/index_.js.map +1 -1
- package/dist/make-sync-db.d.ts.map +1 -1
- package/dist/make-sync-db.js +0 -5
- package/dist/make-sync-db.js.map +1 -1
- package/dist/node/mod.d.ts +7 -7
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +5 -5
- package/dist/node/mod.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/mod.ts +14 -10
- package/src/index_.ts +1 -1
- package/src/{make-sqlite-db.ts → make-sync-db.ts} +16 -23
- package/src/node/mod.ts +19 -10
- package/dist/make-sqlite-db.d.ts +0 -11
- package/dist/make-sqlite-db.d.ts.map +0 -1
- package/dist/make-sqlite-db.js +0 -181
- package/dist/make-sqlite-db.js.map +0 -1
package/dist/make-sqlite-db.js
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { SqliteError } from '@livestore/common';
|
|
2
|
-
import * as SqliteConstants from '@livestore/wa-sqlite/src/sqlite-constants.js';
|
|
3
|
-
import { makeInMemoryDb } from './in-memory-vfs.js';
|
|
4
|
-
export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
5
|
-
const preparedStmts = [];
|
|
6
|
-
const { dbPointer } = metadata;
|
|
7
|
-
let isClosed = false;
|
|
8
|
-
const sqliteDb = {
|
|
9
|
-
_tag: 'SqliteDb',
|
|
10
|
-
metadata,
|
|
11
|
-
prepare: (queryStr) => {
|
|
12
|
-
try {
|
|
13
|
-
const stmts = sqlite3.statements(dbPointer, queryStr.trim(), { unscoped: true });
|
|
14
|
-
let isFinalized = false;
|
|
15
|
-
const preparedStmt = {
|
|
16
|
-
execute: (bindValues, options) => {
|
|
17
|
-
for (const stmt of stmts) {
|
|
18
|
-
if (bindValues !== undefined && Object.keys(bindValues).length > 0) {
|
|
19
|
-
sqlite3.bind_collection(stmt, bindValues);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
sqlite3.step(stmt);
|
|
23
|
-
}
|
|
24
|
-
finally {
|
|
25
|
-
if (options?.onRowsChanged) {
|
|
26
|
-
options.onRowsChanged(sqlite3.changes(dbPointer));
|
|
27
|
-
}
|
|
28
|
-
sqlite3.reset(stmt); // Reset is needed for next execution
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
select: (bindValues) => {
|
|
33
|
-
if (stmts.length !== 1) {
|
|
34
|
-
throw new SqliteError({
|
|
35
|
-
query: { bindValues, sql: queryStr },
|
|
36
|
-
code: -1,
|
|
37
|
-
cause: 'Expected only one statement when using `select`',
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
const stmt = stmts[0];
|
|
41
|
-
if (bindValues !== undefined && Object.keys(bindValues).length > 0) {
|
|
42
|
-
sqlite3.bind_collection(stmt, bindValues);
|
|
43
|
-
}
|
|
44
|
-
const results = [];
|
|
45
|
-
try {
|
|
46
|
-
// NOTE `column_names` only works for `SELECT` statements, ignoring other statements for now
|
|
47
|
-
let columns = undefined;
|
|
48
|
-
try {
|
|
49
|
-
columns = sqlite3.column_names(stmt);
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
-
}
|
|
52
|
-
catch (_e) { }
|
|
53
|
-
while (sqlite3.step(stmt) === SqliteConstants.SQLITE_ROW) {
|
|
54
|
-
if (columns !== undefined) {
|
|
55
|
-
const obj = {};
|
|
56
|
-
for (let i = 0; i < columns.length; i++) {
|
|
57
|
-
obj[columns[i]] = sqlite3.column(stmt, i);
|
|
58
|
-
}
|
|
59
|
-
results.push(obj);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
throw new SqliteError({
|
|
65
|
-
query: { bindValues, sql: queryStr },
|
|
66
|
-
code: e.code,
|
|
67
|
-
cause: e,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
// reset the cached statement so we can use it again in the future
|
|
72
|
-
sqlite3.reset(stmt);
|
|
73
|
-
}
|
|
74
|
-
return results;
|
|
75
|
-
},
|
|
76
|
-
finalize: () => {
|
|
77
|
-
// Avoid double finalization which leads to a crash
|
|
78
|
-
if (isFinalized) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
isFinalized = true;
|
|
82
|
-
for (const stmt of stmts) {
|
|
83
|
-
sqlite3.finalize(stmt);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
sql: queryStr,
|
|
87
|
-
};
|
|
88
|
-
preparedStmts.push(preparedStmt);
|
|
89
|
-
return preparedStmt;
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
throw new SqliteError({
|
|
93
|
-
query: { sql: queryStr, bindValues: {} },
|
|
94
|
-
code: e.code,
|
|
95
|
-
cause: e,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
export: () => sqlite3.serialize(dbPointer, 'main'),
|
|
100
|
-
execute: (queryStr, bindValues, options) => {
|
|
101
|
-
const stmt = sqliteDb.prepare(queryStr);
|
|
102
|
-
stmt.execute(bindValues, options);
|
|
103
|
-
stmt.finalize();
|
|
104
|
-
},
|
|
105
|
-
select: (queryStr, bindValues) => {
|
|
106
|
-
const stmt = sqliteDb.prepare(queryStr);
|
|
107
|
-
const results = stmt.select(bindValues);
|
|
108
|
-
stmt.finalize();
|
|
109
|
-
return results;
|
|
110
|
-
},
|
|
111
|
-
destroy: () => {
|
|
112
|
-
sqliteDb.close();
|
|
113
|
-
metadata.deleteDb();
|
|
114
|
-
// if (metadata._tag === 'opfs') {
|
|
115
|
-
// metadata.vfs.resetAccessHandle(metadata.fileName)
|
|
116
|
-
// }
|
|
117
|
-
},
|
|
118
|
-
close: () => {
|
|
119
|
-
if (isClosed) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
for (const stmt of preparedStmts) {
|
|
123
|
-
stmt.finalize();
|
|
124
|
-
}
|
|
125
|
-
sqlite3.close(dbPointer);
|
|
126
|
-
isClosed = true;
|
|
127
|
-
},
|
|
128
|
-
import: (source) => {
|
|
129
|
-
// https://www.sqlite.org/c3ref/c_deserialize_freeonclose.html
|
|
130
|
-
// #define SQLITE_DESERIALIZE_FREEONCLOSE 1 /* Call sqlite3_free() on close */
|
|
131
|
-
// #define SQLITE_DESERIALIZE_RESIZEABLE 2 /* Resize using sqlite3_realloc64() */
|
|
132
|
-
// #define SQLITE_DESERIALIZE_READONLY 4 /* Database is read-only */
|
|
133
|
-
const FREE_ON_CLOSE = 1;
|
|
134
|
-
const RESIZEABLE = 2;
|
|
135
|
-
// NOTE in case we'll have a future use-case where we need a read-only database, we can reuse this code below
|
|
136
|
-
// if (readOnly === true) {
|
|
137
|
-
// sqlite3.deserialize(db, 'main', bytes, bytes.length, bytes.length, FREE_ON_CLOSE | RESIZEABLE)
|
|
138
|
-
// } else {
|
|
139
|
-
if (source instanceof Uint8Array) {
|
|
140
|
-
const tmpDb = makeInMemoryDb(sqlite3);
|
|
141
|
-
// TODO find a way to do this more efficiently with sqlite to avoid either of the deserialize + backup call
|
|
142
|
-
// Maybe this can be done via the VFS API
|
|
143
|
-
sqlite3.deserialize(tmpDb.dbPointer, 'main', source, source.length, source.length, FREE_ON_CLOSE | RESIZEABLE);
|
|
144
|
-
sqlite3.backup(dbPointer, 'main', tmpDb.dbPointer, 'main');
|
|
145
|
-
sqlite3.close(tmpDb.dbPointer);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
149
|
-
}
|
|
150
|
-
metadata.configureDb(sqliteDb);
|
|
151
|
-
},
|
|
152
|
-
session: () => {
|
|
153
|
-
const sessionPointer = sqlite3.session_create(dbPointer, 'main');
|
|
154
|
-
sqlite3.session_attach(sessionPointer, null);
|
|
155
|
-
return {
|
|
156
|
-
changeset: () => {
|
|
157
|
-
const res = sqlite3.session_changeset(sessionPointer);
|
|
158
|
-
return res.changeset ?? undefined;
|
|
159
|
-
},
|
|
160
|
-
finish: () => {
|
|
161
|
-
sqlite3.session_delete(sessionPointer);
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
},
|
|
165
|
-
makeChangeset: (data) => {
|
|
166
|
-
const changeset = {
|
|
167
|
-
invert: () => {
|
|
168
|
-
const inverted = sqlite3.changeset_invert(data);
|
|
169
|
-
return sqliteDb.makeChangeset(inverted);
|
|
170
|
-
},
|
|
171
|
-
apply: () => {
|
|
172
|
-
sqlite3.changeset_apply(dbPointer, data);
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
return changeset;
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
metadata.configureDb(sqliteDb);
|
|
179
|
-
return sqliteDb;
|
|
180
|
-
};
|
|
181
|
-
//# sourceMappingURL=make-sqlite-db.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
|