@peerbit/indexer-sqlite3 0.0.1-cccc078

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.
Files changed (63) hide show
  1. package/README.md +111 -0
  2. package/dist/benchmark/index.d.ts +2 -0
  3. package/dist/benchmark/index.d.ts.map +1 -0
  4. package/dist/benchmark/index.js +6 -0
  5. package/dist/benchmark/index.js.map +1 -0
  6. package/dist/peerbit/sqlite3-bundler-friendly.mjs +14481 -0
  7. package/dist/peerbit/sqlite3-node.mjs +12561 -0
  8. package/dist/peerbit/sqlite3-opfs-async-proxy.js +826 -0
  9. package/dist/peerbit/sqlite3-worker1-bundler-friendly.mjs +35 -0
  10. package/dist/peerbit/sqlite3-worker1-promiser.js +193 -0
  11. package/dist/peerbit/sqlite3-worker1-promiser.mjs +187 -0
  12. package/dist/peerbit/sqlite3-worker1.js +46 -0
  13. package/dist/peerbit/sqlite3.js +14520 -0
  14. package/dist/peerbit/sqlite3.min.js +21695 -0
  15. package/dist/peerbit/sqlite3.mjs +14483 -0
  16. package/dist/peerbit/sqlite3.wasm +0 -0
  17. package/dist/peerbit/sqlite3.worker.min.js +17995 -0
  18. package/dist/src/engine.d.ts +90 -0
  19. package/dist/src/engine.d.ts.map +1 -0
  20. package/dist/src/engine.js +414 -0
  21. package/dist/src/engine.js.map +1 -0
  22. package/dist/src/index.d.ts +5 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +15 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/schema.d.ts +73 -0
  27. package/dist/src/schema.d.ts.map +1 -0
  28. package/dist/src/schema.js +1075 -0
  29. package/dist/src/schema.js.map +1 -0
  30. package/dist/src/sqlite3-messages.worker.d.ts +86 -0
  31. package/dist/src/sqlite3-messages.worker.d.ts.map +1 -0
  32. package/dist/src/sqlite3-messages.worker.js +9 -0
  33. package/dist/src/sqlite3-messages.worker.js.map +1 -0
  34. package/dist/src/sqlite3.browser.d.ts +4 -0
  35. package/dist/src/sqlite3.browser.d.ts.map +1 -0
  36. package/dist/src/sqlite3.browser.js +181 -0
  37. package/dist/src/sqlite3.browser.js.map +1 -0
  38. package/dist/src/sqlite3.d.ts +4 -0
  39. package/dist/src/sqlite3.d.ts.map +1 -0
  40. package/dist/src/sqlite3.js +51 -0
  41. package/dist/src/sqlite3.js.map +1 -0
  42. package/dist/src/sqlite3.wasm.d.ts +30 -0
  43. package/dist/src/sqlite3.wasm.d.ts.map +1 -0
  44. package/dist/src/sqlite3.wasm.js +180 -0
  45. package/dist/src/sqlite3.wasm.js.map +1 -0
  46. package/dist/src/sqlite3.worker.d.ts +2 -0
  47. package/dist/src/sqlite3.worker.d.ts.map +1 -0
  48. package/dist/src/sqlite3.worker.js +105 -0
  49. package/dist/src/sqlite3.worker.js.map +1 -0
  50. package/dist/src/types.d.ts +23 -0
  51. package/dist/src/types.d.ts.map +1 -0
  52. package/dist/src/types.js +2 -0
  53. package/dist/src/types.js.map +1 -0
  54. package/package.json +80 -0
  55. package/src/engine.ts +639 -0
  56. package/src/index.ts +16 -0
  57. package/src/schema.ts +1607 -0
  58. package/src/sqlite3-messages.worker.ts +123 -0
  59. package/src/sqlite3.browser.ts +245 -0
  60. package/src/sqlite3.ts +56 -0
  61. package/src/sqlite3.wasm.ts +211 -0
  62. package/src/sqlite3.worker.ts +109 -0
  63. package/src/types.ts +39 -0
@@ -0,0 +1,109 @@
1
+ import * as messages from "./sqlite3-messages.worker.js";
2
+ import { create } from "./sqlite3.wasm.js";
3
+
4
+ class SqliteWorkerHandler {
5
+ databases: Map<string, Awaited<ReturnType<typeof create>>> = new Map();
6
+
7
+ async create(databaseId: string, directory?: string) {
8
+ const db = await create(directory);
9
+ this.databases.set(databaseId, db);
10
+ return db;
11
+ }
12
+
13
+ async onMessage(
14
+ message: messages.DatabaseMessages | messages.StatementMessages,
15
+ ) {
16
+ if (message.type === "create") {
17
+ await this.create(message.databaseId, message.directory);
18
+ } else {
19
+ const db = this.databases.get(message.databaseId);
20
+ if (!db) {
21
+ if (message.type === "close") {
22
+ return; // ignore close message if database is not found
23
+ }
24
+
25
+ if (message.type === "status") {
26
+ return "closed";
27
+ }
28
+
29
+ throw new Error(
30
+ "Database not found with id: " +
31
+ message.databaseId +
32
+ ". For message type " +
33
+ message.type,
34
+ );
35
+ }
36
+ if (message.type === "exec") {
37
+ return db.exec(message.sql);
38
+ } else if (message.type === "status") {
39
+ return db.status();
40
+ } else if (message.type === "prepare") {
41
+ const statementId = message.sql;
42
+ await db.prepare(message.sql);
43
+ // db.statements.get(statementId) -> statement, because sqlite3.wasm stores the statement in a map like this
44
+ return statementId;
45
+ } else if (message.type === "close") {
46
+ await db.close();
47
+ this.databases.delete(message.databaseId);
48
+ } else if (message.type === "open") {
49
+ await db.open();
50
+ this.databases.set(message.databaseId, db);
51
+ } else if (message.type === "run") {
52
+ return db.run(message.sql, message.values.map(messages.resolveValue));
53
+ } else {
54
+ const statement = db.statements.get(message.statementId);
55
+ if (!statement) {
56
+ throw new Error(
57
+ "Statement not found with id: " + message.statementId,
58
+ );
59
+ }
60
+
61
+ if (message.type === "bind") {
62
+ return statement.bind(message.values.map(messages.resolveValue));
63
+ } else if (message.type === "finalize") {
64
+ return statement.finalize();
65
+ } else if (message.type === "reset") {
66
+ return statement.reset();
67
+ } else if (message.type === "get") {
68
+ return statement.get(
69
+ message.values
70
+ ? message.values.map(messages.resolveValue)
71
+ : undefined,
72
+ );
73
+ } else if (message.type === "step") {
74
+ return statement.step();
75
+ } else if (message.type === "run-statement") {
76
+ return statement.run(message.values.map(messages.resolveValue));
77
+ } else if (message.type === "all") {
78
+ return statement.all(message.values.map(messages.resolveValue));
79
+ } else {
80
+ throw new Error("Unknown statement message type: " + message["type"]);
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ const worker = new SqliteWorkerHandler();
87
+
88
+ self.onmessage = async (
89
+ messageEvent: MessageEvent<
90
+ messages.DatabaseMessages | messages.StatementMessages
91
+ >,
92
+ ) => {
93
+ try {
94
+ const results = await worker.onMessage(messageEvent.data);
95
+ self.postMessage({
96
+ type: "response",
97
+ id: messageEvent.data.id,
98
+ result: results,
99
+ });
100
+ } catch (error: any) {
101
+ self.postMessage({
102
+ type: "error",
103
+ id: messageEvent.data.id,
104
+ message: error?.message,
105
+ });
106
+ }
107
+ };
108
+
109
+ self.postMessage({ type: "ready" });
package/src/types.ts ADDED
@@ -0,0 +1,39 @@
1
+ import type { BindableValue, SQLLiteValue } from "./schema.js";
2
+
3
+ export type SQLite = {
4
+ create: (directory?: string) => Promise<Database> | Database;
5
+ };
6
+
7
+ export type Database = {
8
+ exec: (sql: string) => Promise<any> | any;
9
+ prepare: (
10
+ sql: string,
11
+ err?: (err: any) => any,
12
+ ) => Promise<Statement> | Statement;
13
+ close: (err?: (err: any) => any) => Promise<any> | any;
14
+ open(): Promise<any> | any;
15
+ status: () => Promise<"open" | "closed"> | "open" | "closed";
16
+ };
17
+
18
+ export type StatementGetResult = { [key: string]: SQLLiteValue };
19
+
20
+ export type Statement = {
21
+ bind: (
22
+ values: BindableValue[],
23
+ err?: (err: any) => any,
24
+ ) => Promise<Statement> | Statement;
25
+ finalize?: (err?: (err: any) => any) => Promise<void> | void;
26
+ get: (
27
+ values?: BindableValue[],
28
+ err?: (err: any, row: any) => any,
29
+ ) => Promise<StatementGetResult> | StatementGetResult;
30
+ run: (
31
+ values: BindableValue[],
32
+ err?: (err: any) => any,
33
+ ) => Promise<void> | void;
34
+ reset?: (err?: (err: any) => any) => Promise<Statement> | Statement;
35
+ all: (
36
+ values: BindableValue[],
37
+ err?: (err: any, rows: any[]) => any,
38
+ ) => Promise<any> | any;
39
+ };