@peerbit/indexer-sqlite3 1.3.0 → 1.3.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/assets/sqlite3/sqlite3.js +463 -469
- package/dist/assets/sqlite3/sqlite3.mjs +446 -436
- package/dist/assets/sqlite3/sqlite3.wasm +0 -0
- package/dist/assets/sqlite3/sqlite3.worker.min.js +1365 -1304
- package/dist/index.min.js +11399 -11342
- package/dist/index.min.js.map +4 -4
- package/dist/src/sqlite3.wasm.d.ts.map +1 -1
- package/dist/src/sqlite3.wasm.js +42 -9
- package/dist/src/sqlite3.wasm.js.map +1 -1
- package/package.json +3 -3
- package/src/sqlite3.wasm.ts +56 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite3.wasm.d.ts","sourceRoot":"","sources":["../../src/sqlite3.wasm.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,QAAQ,IAAI,WAAW,EAC5B,KAAK,iBAAiB,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"sqlite3.wasm.d.ts","sourceRoot":"","sources":["../../src/sqlite3.wasm.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,QAAQ,IAAI,WAAW,EAC5B,KAAK,iBAAiB,IAAI,YAAY,EACtC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACN,KAAK,SAAS,IAAI,UAAU,EAC5B,KAAK,kBAAkB,EACvB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAKzC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAIzC,CAAC;AAEF,cAAM,SAAU,YAAW,UAAU;IAEnC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM;gBADV,SAAS,EAAE,YAAY,EACvB,EAAE,EAAE,MAAM;IAGd,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IAKlB,QAAQ;IAOd,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE;IAe5B,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;IAKrB,KAAK;IA2BX,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;;;IAa3B,IAAI;CAGJ;AAmDD,QAAA,MAAM,MAAM,GAAU,YAAY,MAAM;iBAsFrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;gBA2CvB,MAAM;;;mBAKG,MAAM,OAAO,MAAM;aAe/B,MAAM;aAIN,MAAM,QAAQ,GAAG,EAAE;;;EAM7B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/src/sqlite3.wasm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
2
2
|
import { fromBase64URL, toBase64URL } from "@peerbit/crypto";
|
|
3
|
-
import {
|
|
3
|
+
import {} from "@sqlite.org/sqlite-wasm";
|
|
4
4
|
import { v4 as uuid } from "uuid";
|
|
5
5
|
import {} from "./types.js";
|
|
6
6
|
export const encodeName = (name) => {
|
|
@@ -91,12 +91,42 @@ class Statement {
|
|
|
91
91
|
const log = (...args) => console.log(...args);
|
|
92
92
|
// eslint-disable-next-line no-console
|
|
93
93
|
const error = (...args) => console.error(...args);
|
|
94
|
+
const SQLITE3_ASSET_BASE = "/peerbit/sqlite3";
|
|
95
|
+
const SQLITE3_ASSET_DIR = `${SQLITE3_ASSET_BASE}/`;
|
|
96
|
+
const SQLITE3_WASM_PATH = `${SQLITE3_ASSET_BASE}/sqlite3.wasm`;
|
|
97
|
+
let sqlite3InitModulePromise;
|
|
98
|
+
const ensureSqlite3InitModuleState = () => {
|
|
99
|
+
const globalWithSqlite = globalThis;
|
|
100
|
+
const existing = globalWithSqlite.sqlite3InitModuleState ?? {};
|
|
101
|
+
const debugModule = typeof existing.debugModule === "function"
|
|
102
|
+
? existing.debugModule
|
|
103
|
+
: () => { };
|
|
104
|
+
existing.debugModule = debugModule;
|
|
105
|
+
existing.wasmFilename = SQLITE3_WASM_PATH;
|
|
106
|
+
existing.sqlite3Dir = SQLITE3_ASSET_DIR;
|
|
107
|
+
globalWithSqlite.sqlite3InitModuleState = existing;
|
|
108
|
+
};
|
|
109
|
+
const loadSqlite3InitModule = async () => {
|
|
110
|
+
if (!sqlite3InitModulePromise) {
|
|
111
|
+
sqlite3InitModulePromise = import("@sqlite.org/sqlite-wasm").then((mod) => mod.default);
|
|
112
|
+
}
|
|
113
|
+
const sqlite3InitModule = await sqlite3InitModulePromise;
|
|
114
|
+
// sqlite-wasm reads sqlite3InitModuleState when sqlite3InitModule() runs.
|
|
115
|
+
ensureSqlite3InitModuleState();
|
|
116
|
+
return sqlite3InitModule;
|
|
117
|
+
};
|
|
94
118
|
let poolUtil = undefined;
|
|
95
119
|
let sqlite3 = undefined;
|
|
96
120
|
const create = async (directory) => {
|
|
97
121
|
let statements = new Map();
|
|
122
|
+
const sqlite3InitModule = await loadSqlite3InitModule();
|
|
98
123
|
sqlite3 =
|
|
99
|
-
sqlite3 ||
|
|
124
|
+
sqlite3 ||
|
|
125
|
+
(await sqlite3InitModule({
|
|
126
|
+
print: log,
|
|
127
|
+
printErr: error,
|
|
128
|
+
locateFile: (file) => `${SQLITE3_ASSET_BASE}/${file}`,
|
|
129
|
+
}));
|
|
100
130
|
let sqliteDb = undefined;
|
|
101
131
|
let closeInternal = async () => {
|
|
102
132
|
await Promise.all([...statements.values()].map((x) => x.finalize?.()));
|
|
@@ -188,17 +218,20 @@ const create = async (directory) => {
|
|
|
188
218
|
directory = directory.replace(/^\./, "");
|
|
189
219
|
dbFileName = `${directory}/db.sqlite`;
|
|
190
220
|
const poolDirectory = `${directory}/peerbit/sqlite-opfs-pool`; // we do a unique directory else we will get problem open a client in multiple tabs
|
|
191
|
-
poolUtil
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
await
|
|
197
|
-
sqliteDb = new
|
|
221
|
+
const activePoolUtil = poolUtil ||
|
|
222
|
+
(await sqlite3.installOpfsSAHPoolVfs({
|
|
223
|
+
directory: poolDirectory,
|
|
224
|
+
}));
|
|
225
|
+
poolUtil = activePoolUtil;
|
|
226
|
+
await activePoolUtil.reserveMinimumCapacity(100);
|
|
227
|
+
sqliteDb = new activePoolUtil.OpfsSAHPoolDb(dbFileName);
|
|
198
228
|
}
|
|
199
229
|
else {
|
|
200
230
|
sqliteDb = new sqlite3.oo1.DB(":memory:");
|
|
201
231
|
}
|
|
232
|
+
if (!sqliteDb) {
|
|
233
|
+
throw new Error("Failed to open sqlite database");
|
|
234
|
+
}
|
|
202
235
|
sqliteDb.exec("PRAGMA journal_mode = WAL");
|
|
203
236
|
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
204
237
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite3.wasm.js","sourceRoot":"","sources":["../../src/sqlite3.wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAKN,
|
|
1
|
+
{"version":3,"file":"sqlite3.wasm.js","sourceRoot":"","sources":["../../src/sqlite3.wasm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/indexer-sqlite3",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "SQLite index for document store",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"author": "dao.xyz",
|
|
60
60
|
"license": "MIT",
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"better-sqlite3": "^12.
|
|
62
|
+
"better-sqlite3": "^12.5.0",
|
|
63
63
|
"@dao-xyz/borsh": "^6.0.0",
|
|
64
|
-
"@sqlite.org/sqlite-wasm": "^3.51.1-
|
|
64
|
+
"@sqlite.org/sqlite-wasm": "^3.51.1-build2",
|
|
65
65
|
"p-defer": "^4.0.0",
|
|
66
66
|
"uint8arrays": "^5.1.0",
|
|
67
67
|
"uuid": "^10.0.0",
|
package/src/sqlite3.wasm.ts
CHANGED
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
type SAHPoolUtil,
|
|
6
6
|
type Database as SQLDatabase,
|
|
7
7
|
type PreparedStatement as SQLStatement,
|
|
8
|
-
default as sqlite3InitModule,
|
|
9
8
|
} from "@sqlite.org/sqlite-wasm";
|
|
10
9
|
import { v4 as uuid } from "uuid";
|
|
11
10
|
import type { BindableValue } from "./schema.js";
|
|
@@ -115,15 +114,61 @@ const log = (...args: any) => console.log(...args);
|
|
|
115
114
|
// eslint-disable-next-line no-console
|
|
116
115
|
const error = (...args: any) => console.error(...args);
|
|
117
116
|
|
|
117
|
+
type Sqlite3InitModule = typeof import("@sqlite.org/sqlite-wasm").default;
|
|
118
|
+
type Sqlite3Module = Awaited<ReturnType<Sqlite3InitModule>>;
|
|
119
|
+
type Sqlite3InitModuleState = {
|
|
120
|
+
debugModule?: (...args: unknown[]) => void;
|
|
121
|
+
wasmFilename?: string;
|
|
122
|
+
sqlite3Dir?: string;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const SQLITE3_ASSET_BASE = "/peerbit/sqlite3";
|
|
126
|
+
const SQLITE3_ASSET_DIR = `${SQLITE3_ASSET_BASE}/`;
|
|
127
|
+
const SQLITE3_WASM_PATH = `${SQLITE3_ASSET_BASE}/sqlite3.wasm`;
|
|
128
|
+
|
|
129
|
+
let sqlite3InitModulePromise: Promise<Sqlite3InitModule> | undefined;
|
|
130
|
+
|
|
131
|
+
const ensureSqlite3InitModuleState = () => {
|
|
132
|
+
const globalWithSqlite = globalThis as typeof globalThis & {
|
|
133
|
+
sqlite3InitModuleState?: Sqlite3InitModuleState;
|
|
134
|
+
};
|
|
135
|
+
const existing = globalWithSqlite.sqlite3InitModuleState ?? {};
|
|
136
|
+
const debugModule =
|
|
137
|
+
typeof existing.debugModule === "function"
|
|
138
|
+
? existing.debugModule
|
|
139
|
+
: () => {};
|
|
140
|
+
existing.debugModule = debugModule;
|
|
141
|
+
existing.wasmFilename = SQLITE3_WASM_PATH;
|
|
142
|
+
existing.sqlite3Dir = SQLITE3_ASSET_DIR;
|
|
143
|
+
globalWithSqlite.sqlite3InitModuleState = existing;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const loadSqlite3InitModule = async (): Promise<Sqlite3InitModule> => {
|
|
147
|
+
if (!sqlite3InitModulePromise) {
|
|
148
|
+
sqlite3InitModulePromise = import("@sqlite.org/sqlite-wasm").then(
|
|
149
|
+
(mod) => mod.default,
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
const sqlite3InitModule = await sqlite3InitModulePromise;
|
|
153
|
+
// sqlite-wasm reads sqlite3InitModuleState when sqlite3InitModule() runs.
|
|
154
|
+
ensureSqlite3InitModuleState();
|
|
155
|
+
return sqlite3InitModule;
|
|
156
|
+
};
|
|
157
|
+
|
|
118
158
|
let poolUtil: SAHPoolUtil | undefined = undefined;
|
|
119
|
-
let sqlite3:
|
|
120
|
-
undefined;
|
|
159
|
+
let sqlite3: Sqlite3Module | undefined = undefined;
|
|
121
160
|
|
|
122
161
|
const create = async (directory?: string) => {
|
|
123
162
|
let statements: Map<string, Statement> = new Map();
|
|
124
163
|
|
|
164
|
+
const sqlite3InitModule = await loadSqlite3InitModule();
|
|
125
165
|
sqlite3 =
|
|
126
|
-
sqlite3 ||
|
|
166
|
+
sqlite3 ||
|
|
167
|
+
(await sqlite3InitModule({
|
|
168
|
+
print: log,
|
|
169
|
+
printErr: error,
|
|
170
|
+
locateFile: (file: string) => `${SQLITE3_ASSET_BASE}/${file}`,
|
|
171
|
+
}));
|
|
127
172
|
let sqliteDb: OpfsSAHPoolDatabase | SQLDatabase | undefined = undefined;
|
|
128
173
|
let closeInternal = async () => {
|
|
129
174
|
await Promise.all([...statements.values()].map((x) => x.finalize?.()));
|
|
@@ -220,18 +265,22 @@ const create = async (directory?: string) => {
|
|
|
220
265
|
|
|
221
266
|
dbFileName = `${directory}/db.sqlite`;
|
|
222
267
|
const poolDirectory = `${directory}/peerbit/sqlite-opfs-pool`; // we do a unique directory else we will get problem open a client in multiple tabs
|
|
223
|
-
|
|
268
|
+
const activePoolUtil =
|
|
224
269
|
poolUtil ||
|
|
225
270
|
(await sqlite3!.installOpfsSAHPoolVfs({
|
|
226
271
|
directory: poolDirectory,
|
|
227
272
|
}));
|
|
273
|
+
poolUtil = activePoolUtil;
|
|
228
274
|
|
|
229
|
-
await
|
|
230
|
-
sqliteDb = new
|
|
275
|
+
await activePoolUtil.reserveMinimumCapacity(100);
|
|
276
|
+
sqliteDb = new activePoolUtil.OpfsSAHPoolDb(dbFileName);
|
|
231
277
|
} else {
|
|
232
278
|
sqliteDb = new sqlite3!.oo1.DB(":memory:");
|
|
233
279
|
}
|
|
234
280
|
|
|
281
|
+
if (!sqliteDb) {
|
|
282
|
+
throw new Error("Failed to open sqlite database");
|
|
283
|
+
}
|
|
235
284
|
sqliteDb.exec("PRAGMA journal_mode = WAL");
|
|
236
285
|
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
237
286
|
};
|