@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.
- package/README.md +111 -0
- package/dist/benchmark/index.d.ts +2 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/dist/benchmark/index.js +6 -0
- package/dist/benchmark/index.js.map +1 -0
- package/dist/peerbit/sqlite3-bundler-friendly.mjs +14481 -0
- package/dist/peerbit/sqlite3-node.mjs +12561 -0
- package/dist/peerbit/sqlite3-opfs-async-proxy.js +826 -0
- package/dist/peerbit/sqlite3-worker1-bundler-friendly.mjs +35 -0
- package/dist/peerbit/sqlite3-worker1-promiser.js +193 -0
- package/dist/peerbit/sqlite3-worker1-promiser.mjs +187 -0
- package/dist/peerbit/sqlite3-worker1.js +46 -0
- package/dist/peerbit/sqlite3.js +14520 -0
- package/dist/peerbit/sqlite3.min.js +21695 -0
- package/dist/peerbit/sqlite3.mjs +14483 -0
- package/dist/peerbit/sqlite3.wasm +0 -0
- package/dist/peerbit/sqlite3.worker.min.js +17995 -0
- package/dist/src/engine.d.ts +90 -0
- package/dist/src/engine.d.ts.map +1 -0
- package/dist/src/engine.js +414 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/schema.d.ts +73 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +1075 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/sqlite3-messages.worker.d.ts +86 -0
- package/dist/src/sqlite3-messages.worker.d.ts.map +1 -0
- package/dist/src/sqlite3-messages.worker.js +9 -0
- package/dist/src/sqlite3-messages.worker.js.map +1 -0
- package/dist/src/sqlite3.browser.d.ts +4 -0
- package/dist/src/sqlite3.browser.d.ts.map +1 -0
- package/dist/src/sqlite3.browser.js +181 -0
- package/dist/src/sqlite3.browser.js.map +1 -0
- package/dist/src/sqlite3.d.ts +4 -0
- package/dist/src/sqlite3.d.ts.map +1 -0
- package/dist/src/sqlite3.js +51 -0
- package/dist/src/sqlite3.js.map +1 -0
- package/dist/src/sqlite3.wasm.d.ts +30 -0
- package/dist/src/sqlite3.wasm.d.ts.map +1 -0
- package/dist/src/sqlite3.wasm.js +180 -0
- package/dist/src/sqlite3.wasm.js.map +1 -0
- package/dist/src/sqlite3.worker.d.ts +2 -0
- package/dist/src/sqlite3.worker.d.ts.map +1 -0
- package/dist/src/sqlite3.worker.js +105 -0
- package/dist/src/sqlite3.worker.js.map +1 -0
- package/dist/src/types.d.ts +23 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +80 -0
- package/src/engine.ts +639 -0
- package/src/index.ts +16 -0
- package/src/schema.ts +1607 -0
- package/src/sqlite3-messages.worker.ts +123 -0
- package/src/sqlite3.browser.ts +245 -0
- package/src/sqlite3.ts +56 -0
- package/src/sqlite3.wasm.ts +211 -0
- package/src/sqlite3.worker.ts +109 -0
- package/src/types.ts +39 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
2
|
+
import { fromBase64URL, toBase64URL } from "@peerbit/crypto";
|
|
3
|
+
import { default as sqlite3InitModule, } from "@sqlite.org/sqlite-wasm";
|
|
4
|
+
import {} from "./types.js";
|
|
5
|
+
/* import { v4 as uuid } from 'uuid';
|
|
6
|
+
*/
|
|
7
|
+
export const encodeName = (name) => {
|
|
8
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
9
|
+
const writer = new BinaryWriter();
|
|
10
|
+
writer.string(name);
|
|
11
|
+
return toBase64URL(writer.finalize());
|
|
12
|
+
};
|
|
13
|
+
export const decodeName = (name) => {
|
|
14
|
+
// since "/" and perhaps other characters might not be allowed we do encode
|
|
15
|
+
const writer = new BinaryReader(fromBase64URL(name));
|
|
16
|
+
return writer.string();
|
|
17
|
+
};
|
|
18
|
+
class Statement {
|
|
19
|
+
statement;
|
|
20
|
+
constructor(statement) {
|
|
21
|
+
this.statement = statement;
|
|
22
|
+
}
|
|
23
|
+
async bind(values) {
|
|
24
|
+
await this.statement.bind(values);
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
async finalize() {
|
|
28
|
+
if ((await this.statement.finalize()) > 0) {
|
|
29
|
+
throw new Error("Error finalizing statement");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
get(values) {
|
|
33
|
+
if (values) {
|
|
34
|
+
this.statement.bind(values);
|
|
35
|
+
}
|
|
36
|
+
let step = this.statement.step();
|
|
37
|
+
if (!step) {
|
|
38
|
+
// no data available
|
|
39
|
+
this.statement.reset();
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const results = this.statement.get({});
|
|
43
|
+
this.statement.reset();
|
|
44
|
+
return results;
|
|
45
|
+
}
|
|
46
|
+
run(values) {
|
|
47
|
+
this.statement.bind(values);
|
|
48
|
+
this.statement.stepReset();
|
|
49
|
+
}
|
|
50
|
+
async reset() {
|
|
51
|
+
await this.statement.reset();
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
all(values) {
|
|
55
|
+
if (values && values.length > 0) {
|
|
56
|
+
this.statement.bind(values);
|
|
57
|
+
}
|
|
58
|
+
let results = [];
|
|
59
|
+
while (this.statement.step()) {
|
|
60
|
+
results.push(this.statement.get({}));
|
|
61
|
+
}
|
|
62
|
+
this.statement.reset();
|
|
63
|
+
return results;
|
|
64
|
+
}
|
|
65
|
+
step() {
|
|
66
|
+
return this.statement.step();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/* export class Database implements IDatabase {
|
|
70
|
+
|
|
71
|
+
statements: Map<string, Statement> = new Map();
|
|
72
|
+
private db: SQLDatabase
|
|
73
|
+
constructor(private readonly _close?: () => Promise<any> | any) { }
|
|
74
|
+
|
|
75
|
+
async exec(sql: string) {
|
|
76
|
+
return this.db.exec(sql);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async prepare(sql: string) {
|
|
80
|
+
const statement = this.db.prepare(sql);
|
|
81
|
+
const wrappedStatement = new Statement(statement);
|
|
82
|
+
this.statements.set(sql, wrappedStatement)
|
|
83
|
+
return wrappedStatement
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async close() {
|
|
87
|
+
await Promise.all([...this.statements.values()].map(x => x.finalize?.()))
|
|
88
|
+
await this.db.close();
|
|
89
|
+
await this._close?.()
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async get(sql: string) {
|
|
93
|
+
return this.db.exec({ sql, rowMode: 'array' });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async run(sql: string, bind: any[]) {
|
|
97
|
+
return this.db.exec(sql, { bind, rowMode: 'array' });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
*/
|
|
102
|
+
// eslint-disable-next-line no-console
|
|
103
|
+
const log = (...args) => console.log(...args);
|
|
104
|
+
// eslint-disable-next-line no-console
|
|
105
|
+
const error = (...args) => console.error(...args);
|
|
106
|
+
/* let initOpfsResult: Promise<{ sqlite3: Awaited<ReturnType<typeof sqlite3InitModule>>,poolUtil: }> | undefined = undefined;
|
|
107
|
+
const initOpfs = async () => {
|
|
108
|
+
|
|
109
|
+
let sqlite3: Awaited<ReturnType<typeof sqlite3InitModule>> = await sqlite3InitModule({
|
|
110
|
+
locateFile: (path, prefix) => {
|
|
111
|
+
|
|
112
|
+
return path;
|
|
113
|
+
}, print: log, printErr: error
|
|
114
|
+
});
|
|
115
|
+
let poolUtil = await sqlite3.installOpfsSAHPoolVfs({
|
|
116
|
+
directory: encodeName("helloworld")
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
return initOpfsResult || (initOpfsResult = { sqlite3, poolUtil })
|
|
120
|
+
} */
|
|
121
|
+
let poolUtil = undefined;
|
|
122
|
+
let sqlite3 = undefined;
|
|
123
|
+
const create = async (directory) => {
|
|
124
|
+
let statements = new Map();
|
|
125
|
+
sqlite3 =
|
|
126
|
+
sqlite3 || (await sqlite3InitModule({ print: log, printErr: error }));
|
|
127
|
+
let sqliteDb = undefined;
|
|
128
|
+
let close = async () => {
|
|
129
|
+
await Promise.all([...statements.values()].map((x) => x.finalize?.()));
|
|
130
|
+
statements.clear();
|
|
131
|
+
await sqliteDb?.close();
|
|
132
|
+
sqliteDb = undefined;
|
|
133
|
+
};
|
|
134
|
+
let open = async () => {
|
|
135
|
+
if (sqliteDb) {
|
|
136
|
+
return sqliteDb;
|
|
137
|
+
}
|
|
138
|
+
if (directory) {
|
|
139
|
+
// directory has to be absolute path. Remove leading dot if any
|
|
140
|
+
// TODO show warning if directory is not absolute?
|
|
141
|
+
directory = directory.replace(/^\./, "");
|
|
142
|
+
let dbFileName = `${directory}/db.sqlite`;
|
|
143
|
+
poolUtil =
|
|
144
|
+
poolUtil ||
|
|
145
|
+
(await sqlite3.installOpfsSAHPoolVfs({
|
|
146
|
+
directory: "peerbit/sqlite", // encodeName("peerbit")
|
|
147
|
+
}));
|
|
148
|
+
await poolUtil.reserveMinimumCapacity(100);
|
|
149
|
+
sqliteDb = new poolUtil.OpfsSAHPoolDb(dbFileName);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
sqliteDb = new sqlite3.oo1.DB(":memory:");
|
|
153
|
+
}
|
|
154
|
+
sqliteDb.exec("PRAGMA journal_mode = WAL");
|
|
155
|
+
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
156
|
+
};
|
|
157
|
+
return {
|
|
158
|
+
close,
|
|
159
|
+
exec: (sql) => {
|
|
160
|
+
return sqliteDb.exec(sql);
|
|
161
|
+
},
|
|
162
|
+
open,
|
|
163
|
+
prepare: (sql) => {
|
|
164
|
+
const statement = sqliteDb.prepare(sql);
|
|
165
|
+
const wrappedStatement = new Statement(statement);
|
|
166
|
+
statements.set(sql, wrappedStatement);
|
|
167
|
+
return wrappedStatement;
|
|
168
|
+
},
|
|
169
|
+
get(sql) {
|
|
170
|
+
return sqliteDb.exec({ sql, rowMode: "array" });
|
|
171
|
+
},
|
|
172
|
+
run(sql, bind) {
|
|
173
|
+
return sqliteDb.exec(sql, { bind, rowMode: "array" });
|
|
174
|
+
},
|
|
175
|
+
status: () => (sqliteDb?.isOpen() ? "open" : "closed"),
|
|
176
|
+
statements,
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
export { create };
|
|
180
|
+
//# sourceMappingURL=sqlite3.wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite3.wasm.js","sourceRoot":"","sources":["../../src/sqlite3.wasm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite3.worker.d.ts","sourceRoot":"","sources":["../../src/sqlite3.worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as messages from "./sqlite3-messages.worker.js";
|
|
2
|
+
import { create } from "./sqlite3.wasm.js";
|
|
3
|
+
class SqliteWorkerHandler {
|
|
4
|
+
databases = new Map();
|
|
5
|
+
async create(databaseId, directory) {
|
|
6
|
+
const db = await create(directory);
|
|
7
|
+
this.databases.set(databaseId, db);
|
|
8
|
+
return db;
|
|
9
|
+
}
|
|
10
|
+
async onMessage(message) {
|
|
11
|
+
if (message.type === "create") {
|
|
12
|
+
await this.create(message.databaseId, message.directory);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const db = this.databases.get(message.databaseId);
|
|
16
|
+
if (!db) {
|
|
17
|
+
if (message.type === "close") {
|
|
18
|
+
return; // ignore close message if database is not found
|
|
19
|
+
}
|
|
20
|
+
if (message.type === "status") {
|
|
21
|
+
return "closed";
|
|
22
|
+
}
|
|
23
|
+
throw new Error("Database not found with id: " +
|
|
24
|
+
message.databaseId +
|
|
25
|
+
". For message type " +
|
|
26
|
+
message.type);
|
|
27
|
+
}
|
|
28
|
+
if (message.type === "exec") {
|
|
29
|
+
return db.exec(message.sql);
|
|
30
|
+
}
|
|
31
|
+
else if (message.type === "status") {
|
|
32
|
+
return db.status();
|
|
33
|
+
}
|
|
34
|
+
else if (message.type === "prepare") {
|
|
35
|
+
const statementId = message.sql;
|
|
36
|
+
await db.prepare(message.sql);
|
|
37
|
+
// db.statements.get(statementId) -> statement, because sqlite3.wasm stores the statement in a map like this
|
|
38
|
+
return statementId;
|
|
39
|
+
}
|
|
40
|
+
else if (message.type === "close") {
|
|
41
|
+
await db.close();
|
|
42
|
+
this.databases.delete(message.databaseId);
|
|
43
|
+
}
|
|
44
|
+
else if (message.type === "open") {
|
|
45
|
+
await db.open();
|
|
46
|
+
this.databases.set(message.databaseId, db);
|
|
47
|
+
}
|
|
48
|
+
else if (message.type === "run") {
|
|
49
|
+
return db.run(message.sql, message.values.map(messages.resolveValue));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const statement = db.statements.get(message.statementId);
|
|
53
|
+
if (!statement) {
|
|
54
|
+
throw new Error("Statement not found with id: " + message.statementId);
|
|
55
|
+
}
|
|
56
|
+
if (message.type === "bind") {
|
|
57
|
+
return statement.bind(message.values.map(messages.resolveValue));
|
|
58
|
+
}
|
|
59
|
+
else if (message.type === "finalize") {
|
|
60
|
+
return statement.finalize();
|
|
61
|
+
}
|
|
62
|
+
else if (message.type === "reset") {
|
|
63
|
+
return statement.reset();
|
|
64
|
+
}
|
|
65
|
+
else if (message.type === "get") {
|
|
66
|
+
return statement.get(message.values
|
|
67
|
+
? message.values.map(messages.resolveValue)
|
|
68
|
+
: undefined);
|
|
69
|
+
}
|
|
70
|
+
else if (message.type === "step") {
|
|
71
|
+
return statement.step();
|
|
72
|
+
}
|
|
73
|
+
else if (message.type === "run-statement") {
|
|
74
|
+
return statement.run(message.values.map(messages.resolveValue));
|
|
75
|
+
}
|
|
76
|
+
else if (message.type === "all") {
|
|
77
|
+
return statement.all(message.values.map(messages.resolveValue));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error("Unknown statement message type: " + message["type"]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const worker = new SqliteWorkerHandler();
|
|
87
|
+
self.onmessage = async (messageEvent) => {
|
|
88
|
+
try {
|
|
89
|
+
const results = await worker.onMessage(messageEvent.data);
|
|
90
|
+
self.postMessage({
|
|
91
|
+
type: "response",
|
|
92
|
+
id: messageEvent.data.id,
|
|
93
|
+
result: results,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
self.postMessage({
|
|
98
|
+
type: "error",
|
|
99
|
+
id: messageEvent.data.id,
|
|
100
|
+
message: error?.message,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
self.postMessage({ type: "ready" });
|
|
105
|
+
//# sourceMappingURL=sqlite3.worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite3.worker.js","sourceRoot":"","sources":["../../src/sqlite3.worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,mBAAmB;IACxB,SAAS,GAAoD,IAAI,GAAG,EAAE,CAAC;IAEvE,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,SAAkB;QAClD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,SAAS,CACd,OAA+D;QAE/D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACP,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9B,OAAO,CAAC,gDAAgD;gBACzD,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO,QAAQ,CAAC;gBACjB,CAAC;gBAED,MAAM,IAAI,KAAK,CACd,8BAA8B;oBAC7B,OAAO,CAAC,UAAU;oBAClB,qBAAqB;oBACrB,OAAO,CAAC,IAAI,CACb,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;gBAChC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,4GAA4G;gBAC5G,OAAO,WAAW,CAAC;YACpB,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACP,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CACd,+BAA+B,GAAG,OAAO,CAAC,WAAW,CACrD,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBAClE,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnC,OAAO,SAAS,CAAC,GAAG,CACnB,OAAO,CAAC,MAAM;wBACb,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC3C,CAAC,CAAC,SAAS,CACZ,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;gBACzB,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC7C,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnC,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvE,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;CACD;AACD,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEzC,IAAI,CAAC,SAAS,GAAG,KAAK,EACrB,YAEC,EACA,EAAE;IACH,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,EAAE,OAAO;SACf,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO;SACvB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC,CAAC;AAEF,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BindableValue, SQLLiteValue } from "./schema.js";
|
|
2
|
+
export type SQLite = {
|
|
3
|
+
create: (directory?: string) => Promise<Database> | Database;
|
|
4
|
+
};
|
|
5
|
+
export type Database = {
|
|
6
|
+
exec: (sql: string) => Promise<any> | any;
|
|
7
|
+
prepare: (sql: string, err?: (err: any) => any) => Promise<Statement> | Statement;
|
|
8
|
+
close: (err?: (err: any) => any) => Promise<any> | any;
|
|
9
|
+
open(): Promise<any> | any;
|
|
10
|
+
status: () => Promise<"open" | "closed"> | "open" | "closed";
|
|
11
|
+
};
|
|
12
|
+
export type StatementGetResult = {
|
|
13
|
+
[key: string]: SQLLiteValue;
|
|
14
|
+
};
|
|
15
|
+
export type Statement = {
|
|
16
|
+
bind: (values: BindableValue[], err?: (err: any) => any) => Promise<Statement> | Statement;
|
|
17
|
+
finalize?: (err?: (err: any) => any) => Promise<void> | void;
|
|
18
|
+
get: (values?: BindableValue[], err?: (err: any, row: any) => any) => Promise<StatementGetResult> | StatementGetResult;
|
|
19
|
+
run: (values: BindableValue[], err?: (err: any) => any) => Promise<void> | void;
|
|
20
|
+
reset?: (err?: (err: any) => any) => Promise<Statement> | Statement;
|
|
21
|
+
all: (values: BindableValue[], err?: (err: any, rows: any[]) => any) => Promise<any> | any;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1C,OAAO,EAAE,CACR,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KACnB,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,CACL,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KACnB,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7D,GAAG,EAAE,CACJ,MAAM,CAAC,EAAE,aAAa,EAAE,EACxB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAC7B,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;IACtD,GAAG,EAAE,CACJ,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACpE,GAAG,EAAE,CACJ,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,KAChC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@peerbit/indexer-sqlite3",
|
|
3
|
+
"version": "0.0.1-cccc078",
|
|
4
|
+
"description": "SQLite index for document store",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"types": "./dist/src/index.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
"*": {
|
|
10
|
+
"*": [
|
|
11
|
+
"*",
|
|
12
|
+
"dist/*",
|
|
13
|
+
"dist/src/*",
|
|
14
|
+
"dist/src/*/index"
|
|
15
|
+
],
|
|
16
|
+
"src/*": [
|
|
17
|
+
"*",
|
|
18
|
+
"dist/*",
|
|
19
|
+
"dist/src/*",
|
|
20
|
+
"dist/src/*/index"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"src",
|
|
26
|
+
"dist",
|
|
27
|
+
"!dist/e2e",
|
|
28
|
+
"!dist/test",
|
|
29
|
+
"!**/*.tsbuildinfo"
|
|
30
|
+
],
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/src/index.d.ts",
|
|
34
|
+
"import": "./dist/src/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./sqlite.org": {
|
|
37
|
+
"types": "./dist/peerbit/sqlite.org/sqlite3.d.ts",
|
|
38
|
+
"import": "./dist/peerbit/sqlite.org/sqlite3.js"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"browser": {
|
|
42
|
+
"./dist/src/sqlite3.js": "./dist/src/sqlite3.browser.js"
|
|
43
|
+
},
|
|
44
|
+
"eslintConfig": {
|
|
45
|
+
"extends": "peerbit",
|
|
46
|
+
"parserOptions": {
|
|
47
|
+
"project": true,
|
|
48
|
+
"sourceType": "module"
|
|
49
|
+
},
|
|
50
|
+
"ignorePatterns": [
|
|
51
|
+
"!.aegir.js",
|
|
52
|
+
"test/ts-use",
|
|
53
|
+
"*.d.ts"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"clean": "aegir clean",
|
|
61
|
+
"copy-sqlite-wasm": "mkdir -p ./dist/peerbit/ && cp -r ../../../../node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm/. ./dist/peerbit/",
|
|
62
|
+
"build-worker": "node ../../../../node_modules/esbuild/bin/esbuild --bundle ./src/sqlite3.worker.ts --format=esm --outfile=./dist/peerbit/sqlite3.worker.min.js",
|
|
63
|
+
"build": "aegir build && npm run build-worker && npm run copy-sqlite-wasm",
|
|
64
|
+
"test": "aegir test",
|
|
65
|
+
"test:browser": "aegir clean && aegir test -t browser",
|
|
66
|
+
"test:node": "aegir clean && aegir test -t node",
|
|
67
|
+
"lint": "aegir lint"
|
|
68
|
+
},
|
|
69
|
+
"author": "dao.xyz",
|
|
70
|
+
"license": "MIT",
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"better-sqlite3": "^11.1.2",
|
|
73
|
+
"@peerbit/indexer-interface": "0.0.1-cccc078",
|
|
74
|
+
"@sqlite.org/sqlite-wasm": "^3.46.0-build2"
|
|
75
|
+
},
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@types/better-sqlite3": "^7.6.11",
|
|
78
|
+
"@peerbit/indexer-tests": "0.0.1-cccc078"
|
|
79
|
+
}
|
|
80
|
+
}
|