@livestore/sqlite-wasm 0.3.0-dev.14 → 0.3.0-dev.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/sqlite-wasm",
3
- "version": "0.3.0-dev.14",
3
+ "version": "0.3.0-dev.16",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -23,8 +23,8 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@livestore/wa-sqlite": "1.0.5-dev.1",
26
- "@livestore/common": "0.3.0-dev.14",
27
- "@livestore/utils": "0.3.0-dev.14"
26
+ "@livestore/common": "0.3.0-dev.16",
27
+ "@livestore/utils": "0.3.0-dev.16"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/chrome": "^0.0.304",
@@ -1,11 +0,0 @@
1
- import type { PersistenceInfo, SynchronousDatabase } from '@livestore/common';
2
- export declare const makeSynchronousDatabase: <TMetadata extends {
3
- dbPointer: number;
4
- persistenceInfo: PersistenceInfo;
5
- deleteDb: () => void;
6
- configureDb: (db: SynchronousDatabase<TMetadata>) => void;
7
- }>({ sqlite3, metadata, }: {
8
- sqlite3: SQLiteAPI;
9
- metadata: TMetadata;
10
- }) => SynchronousDatabase<TMetadata>;
11
- //# sourceMappingURL=make-sync-db.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"make-sync-db.d.ts","sourceRoot":"","sources":["../src/make-sync-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,mBAAmB,EAEpB,MAAM,mBAAmB,CAAA;AAM1B,eAAO,MAAM,uBAAuB,GAClC,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC1D,0BAIA;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,mBAAmB,CAAC,SAAS,CAkMhC,CAAA"}
@@ -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 makeSynchronousDatabase = ({ sqlite3, metadata, }) => {
5
- const preparedStmts = [];
6
- const { dbPointer } = metadata;
7
- let isClosed = false;
8
- const syncDb = {
9
- _tag: 'SynchronousDatabase',
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 = syncDb.prepare(queryStr);
102
- stmt.execute(bindValues, options);
103
- stmt.finalize();
104
- },
105
- select: (queryStr, bindValues) => {
106
- const stmt = syncDb.prepare(queryStr);
107
- const results = stmt.select(bindValues);
108
- stmt.finalize();
109
- return results;
110
- },
111
- destroy: () => {
112
- syncDb.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(syncDb);
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 syncDb.makeChangeset(inverted);
170
- },
171
- apply: () => {
172
- sqlite3.changeset_apply(dbPointer, data);
173
- },
174
- };
175
- return changeset;
176
- },
177
- };
178
- metadata.configureDb(syncDb);
179
- return syncDb;
180
- };
181
- //# sourceMappingURL=make-sync-db.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"make-sync-db.js","sourceRoot":"","sources":["../src/make-sync-db.ts"],"names":[],"mappings":"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"}