@peerbit/indexer-sqlite3 1.3.1 → 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.worker.min.js +763 -701
- package/dist/index.min.js +10775 -10717
- package/dist/index.min.js.map +4 -4
- package/dist/src/sqlite3.wasm.d.ts.map +1 -1
- package/dist/src/sqlite3.wasm.js +37 -9
- package/dist/src/sqlite3.wasm.js.map +1 -1
- package/package.json +3 -3
- package/src/sqlite3.wasm.ts +51 -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,16 +91,41 @@ 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
124
|
sqlite3 ||
|
|
100
125
|
(await sqlite3InitModule({
|
|
101
126
|
print: log,
|
|
102
127
|
printErr: error,
|
|
103
|
-
locateFile: (file) =>
|
|
128
|
+
locateFile: (file) => `${SQLITE3_ASSET_BASE}/${file}`,
|
|
104
129
|
}));
|
|
105
130
|
let sqliteDb = undefined;
|
|
106
131
|
let closeInternal = async () => {
|
|
@@ -193,17 +218,20 @@ const create = async (directory) => {
|
|
|
193
218
|
directory = directory.replace(/^\./, "");
|
|
194
219
|
dbFileName = `${directory}/db.sqlite`;
|
|
195
220
|
const poolDirectory = `${directory}/peerbit/sqlite-opfs-pool`; // we do a unique directory else we will get problem open a client in multiple tabs
|
|
196
|
-
poolUtil
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
await
|
|
202
|
-
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);
|
|
203
228
|
}
|
|
204
229
|
else {
|
|
205
230
|
sqliteDb = new sqlite3.oo1.DB(":memory:");
|
|
206
231
|
}
|
|
232
|
+
if (!sqliteDb) {
|
|
233
|
+
throw new Error("Failed to open sqlite database");
|
|
234
|
+
}
|
|
207
235
|
sqliteDb.exec("PRAGMA journal_mode = WAL");
|
|
208
236
|
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
209
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,
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"uuid": "^10.0.0",
|
|
68
68
|
"libsodium-wrappers": "^0.7.15",
|
|
69
69
|
"@peerbit/indexer-interface": "2.1.0",
|
|
70
|
-
"@peerbit/
|
|
71
|
-
"@peerbit/
|
|
70
|
+
"@peerbit/crypto": "2.4.0",
|
|
71
|
+
"@peerbit/time": "2.3.0"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@types/better-sqlite3": "^7.6.13",
|
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,19 +114,60 @@ 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
166
|
sqlite3 ||
|
|
127
167
|
(await sqlite3InitModule({
|
|
128
168
|
print: log,
|
|
129
169
|
printErr: error,
|
|
130
|
-
locateFile: (file: string) =>
|
|
170
|
+
locateFile: (file: string) => `${SQLITE3_ASSET_BASE}/${file}`,
|
|
131
171
|
}));
|
|
132
172
|
let sqliteDb: OpfsSAHPoolDatabase | SQLDatabase | undefined = undefined;
|
|
133
173
|
let closeInternal = async () => {
|
|
@@ -225,18 +265,22 @@ const create = async (directory?: string) => {
|
|
|
225
265
|
|
|
226
266
|
dbFileName = `${directory}/db.sqlite`;
|
|
227
267
|
const poolDirectory = `${directory}/peerbit/sqlite-opfs-pool`; // we do a unique directory else we will get problem open a client in multiple tabs
|
|
228
|
-
|
|
268
|
+
const activePoolUtil =
|
|
229
269
|
poolUtil ||
|
|
230
270
|
(await sqlite3!.installOpfsSAHPoolVfs({
|
|
231
271
|
directory: poolDirectory,
|
|
232
272
|
}));
|
|
273
|
+
poolUtil = activePoolUtil;
|
|
233
274
|
|
|
234
|
-
await
|
|
235
|
-
sqliteDb = new
|
|
275
|
+
await activePoolUtil.reserveMinimumCapacity(100);
|
|
276
|
+
sqliteDb = new activePoolUtil.OpfsSAHPoolDb(dbFileName);
|
|
236
277
|
} else {
|
|
237
278
|
sqliteDb = new sqlite3!.oo1.DB(":memory:");
|
|
238
279
|
}
|
|
239
280
|
|
|
281
|
+
if (!sqliteDb) {
|
|
282
|
+
throw new Error("Failed to open sqlite database");
|
|
283
|
+
}
|
|
240
284
|
sqliteDb.exec("PRAGMA journal_mode = WAL");
|
|
241
285
|
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
242
286
|
};
|