@peerbit/indexer-sqlite3 1.1.4 → 1.2.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/peerbit/sqlite3-bundler-friendly.mjs +7 -7
- package/dist/peerbit/sqlite3-node.mjs +7 -7
- package/dist/peerbit/sqlite3.js +7 -7
- package/dist/peerbit/sqlite3.min.js +688 -168
- package/dist/peerbit/sqlite3.mjs +7 -7
- package/dist/peerbit/sqlite3.wasm +0 -0
- package/dist/peerbit/sqlite3.worker.min.js +19 -5
- package/dist/src/engine.d.ts +4 -1
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +125 -48
- package/dist/src/engine.js.map +1 -1
- package/dist/src/query-planner.d.ts +47 -0
- package/dist/src/query-planner.d.ts.map +1 -0
- package/dist/src/query-planner.js +290 -0
- package/dist/src/query-planner.js.map +1 -0
- package/dist/src/schema.d.ts +31 -7
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +370 -123
- package/dist/src/schema.js.map +1 -1
- package/dist/src/sqlite3-messages.worker.d.ts +4 -1
- package/dist/src/sqlite3-messages.worker.d.ts.map +1 -1
- package/dist/src/sqlite3-messages.worker.js.map +1 -1
- package/dist/src/sqlite3.browser.d.ts.map +1 -1
- package/dist/src/sqlite3.browser.js +7 -0
- package/dist/src/sqlite3.browser.js.map +1 -1
- package/dist/src/sqlite3.d.ts.map +1 -1
- package/dist/src/sqlite3.js +24 -14
- package/dist/src/sqlite3.js.map +1 -1
- package/dist/src/sqlite3.wasm.d.ts +1 -0
- package/dist/src/sqlite3.wasm.d.ts.map +1 -1
- package/dist/src/sqlite3.wasm.js +9 -1
- package/dist/src/sqlite3.wasm.js.map +1 -1
- package/dist/src/sqlite3.worker.js +7 -0
- package/dist/src/sqlite3.worker.js.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/engine.ts +143 -68
- package/src/query-planner.ts +334 -0
- package/src/schema.ts +519 -164
- package/src/sqlite3-messages.worker.ts +5 -0
- package/src/sqlite3.browser.ts +8 -0
- package/src/sqlite3.ts +24 -13
- package/src/sqlite3.wasm.ts +11 -1
- package/src/sqlite3.worker.ts +6 -1
- package/src/types.ts +1 -0
|
@@ -24,6 +24,10 @@ interface Close extends Message {
|
|
|
24
24
|
type: "close";
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
interface Drop extends Message {
|
|
28
|
+
type: "drop";
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
interface Open extends Message {
|
|
28
32
|
type: "open";
|
|
29
33
|
}
|
|
@@ -107,6 +111,7 @@ export type DatabaseMessages =
|
|
|
107
111
|
| Exec
|
|
108
112
|
| Prepare
|
|
109
113
|
| Close
|
|
114
|
+
| Drop
|
|
110
115
|
| Open
|
|
111
116
|
| Run
|
|
112
117
|
| Status;
|
package/src/sqlite3.browser.ts
CHANGED
|
@@ -166,6 +166,14 @@ class ProxyDatabase implements IDatabase {
|
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
async drop() {
|
|
170
|
+
return this.send({
|
|
171
|
+
type: "drop",
|
|
172
|
+
id: uuid(),
|
|
173
|
+
databaseId: this.databaseId,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
|
|
169
177
|
async status() {
|
|
170
178
|
return this.send<"open" | "closed">({
|
|
171
179
|
type: "status",
|
package/src/sqlite3.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
let create = async (directory?: string) => {
|
|
9
9
|
let db: DB.Database | undefined = undefined;
|
|
10
10
|
let statements: Map<string, IStatement> = new Map();
|
|
11
|
+
let dbFileName: string;
|
|
11
12
|
|
|
12
13
|
let close = () => {
|
|
13
14
|
for (const stmt of statements.values()) {
|
|
@@ -20,26 +21,35 @@ let create = async (directory?: string) => {
|
|
|
20
21
|
db = undefined;
|
|
21
22
|
}
|
|
22
23
|
};
|
|
24
|
+
let drop = () => {
|
|
25
|
+
if (db && !db?.memory) {
|
|
26
|
+
fs.rmSync(dbFileName);
|
|
27
|
+
db = undefined;
|
|
28
|
+
}
|
|
29
|
+
return close();
|
|
30
|
+
};
|
|
23
31
|
let open = () => {
|
|
24
|
-
if (db) {
|
|
32
|
+
if (db?.open) {
|
|
25
33
|
return db;
|
|
26
34
|
}
|
|
27
35
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
if (!db) {
|
|
37
|
+
if (directory) {
|
|
38
|
+
// if directory is provided, check if directory exist, if not create it
|
|
39
|
+
if (!fs.existsSync(directory)) {
|
|
40
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
dbFileName = `${directory}/db.sqlite`;
|
|
43
|
+
} else {
|
|
44
|
+
dbFileName = ":memory:";
|
|
33
45
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
|
|
47
|
+
db = new DB(dbFileName, {
|
|
48
|
+
fileMustExist: false,
|
|
49
|
+
readonly: false /* , verbose: (message) => console.log(message) */,
|
|
50
|
+
});
|
|
37
51
|
}
|
|
38
52
|
|
|
39
|
-
db = new DB(dbFileName, {
|
|
40
|
-
fileMustExist: false,
|
|
41
|
-
readonly: false /* , verbose: (message) => console.log(message) */,
|
|
42
|
-
});
|
|
43
53
|
// TODO this test makes things faster, but for benchmarking it might yield wierd results where some runs are faster than others
|
|
44
54
|
db.pragma("journal_mode = WAL");
|
|
45
55
|
db.pragma("foreign_keys = on");
|
|
@@ -69,6 +79,7 @@ let create = async (directory?: string) => {
|
|
|
69
79
|
},
|
|
70
80
|
statements,
|
|
71
81
|
close,
|
|
82
|
+
drop,
|
|
72
83
|
open,
|
|
73
84
|
status: () => (db ? "open" : "closed"),
|
|
74
85
|
} as IDatabase; // TODO fix this
|
package/src/sqlite3.wasm.ts
CHANGED
|
@@ -110,6 +110,15 @@ const create = async (directory?: string) => {
|
|
|
110
110
|
await sqliteDb?.close();
|
|
111
111
|
sqliteDb = undefined;
|
|
112
112
|
};
|
|
113
|
+
let dbFileName: string;
|
|
114
|
+
|
|
115
|
+
let drop = async () => {
|
|
116
|
+
if (poolUtil && dbFileName != null) {
|
|
117
|
+
poolUtil.unlink(dbFileName);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return close();
|
|
121
|
+
};
|
|
113
122
|
let open = async () => {
|
|
114
123
|
if (sqliteDb) {
|
|
115
124
|
return sqliteDb;
|
|
@@ -119,7 +128,7 @@ const create = async (directory?: string) => {
|
|
|
119
128
|
// TODO show warning if directory is not absolute?
|
|
120
129
|
directory = directory.replace(/^\./, "");
|
|
121
130
|
|
|
122
|
-
|
|
131
|
+
dbFileName = `${directory}/db.sqlite`;
|
|
123
132
|
|
|
124
133
|
poolUtil =
|
|
125
134
|
poolUtil ||
|
|
@@ -143,6 +152,7 @@ const create = async (directory?: string) => {
|
|
|
143
152
|
return sqliteDb!.exec(sql);
|
|
144
153
|
},
|
|
145
154
|
open,
|
|
155
|
+
drop,
|
|
146
156
|
prepare: async (sql: string, id?: string) => {
|
|
147
157
|
if (id == null) {
|
|
148
158
|
id = uuid();
|
package/src/sqlite3.worker.ts
CHANGED
|
@@ -21,7 +21,9 @@ class SqliteWorkerHandler {
|
|
|
21
21
|
if (message.type === "close") {
|
|
22
22
|
return; // ignore close message if database is not found
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
if (message.type === "drop") {
|
|
25
|
+
return; // ignore close message if database is not found
|
|
26
|
+
}
|
|
25
27
|
if (message.type === "status") {
|
|
26
28
|
return "closed";
|
|
27
29
|
}
|
|
@@ -45,6 +47,9 @@ class SqliteWorkerHandler {
|
|
|
45
47
|
} else if (message.type === "close") {
|
|
46
48
|
await db.close();
|
|
47
49
|
this.databases.delete(message.databaseId);
|
|
50
|
+
} else if (message.type === "drop") {
|
|
51
|
+
await db.drop();
|
|
52
|
+
this.databases.delete(message.databaseId);
|
|
48
53
|
} else if (message.type === "open") {
|
|
49
54
|
await db.open();
|
|
50
55
|
this.databases.set(message.databaseId, db);
|
package/src/types.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type Database = {
|
|
|
8
8
|
exec: (sql: string) => Promise<any> | any;
|
|
9
9
|
prepare: (sql: string, id?: string) => Promise<Statement> | Statement;
|
|
10
10
|
close: (err?: (err: any) => any) => Promise<any> | any;
|
|
11
|
+
drop: () => Promise<any> | any;
|
|
11
12
|
open(): Promise<any> | any;
|
|
12
13
|
statements: {
|
|
13
14
|
get: (id: string) => Statement | undefined;
|