@peerbit/indexer-sqlite3 3.0.0-e6ea5c0 → 3.0.1
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 +168 -52
- package/dist/index.min.js +277 -53
- package/dist/index.min.js.map +3 -3
- package/dist/src/engine.d.ts +9 -3
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +75 -9
- package/dist/src/engine.js.map +1 -1
- package/dist/src/index.d.ts +7 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/schema.d.ts +5 -1
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +42 -12
- package/dist/src/schema.js.map +1 -1
- package/dist/src/sqlite3-messages.worker.d.ts +47 -8
- package/dist/src/sqlite3-messages.worker.d.ts.map +1 -1
- package/dist/src/sqlite3-messages.worker.js +42 -3
- package/dist/src/sqlite3-messages.worker.js.map +1 -1
- package/dist/src/sqlite3.browser.d.ts +22 -1
- package/dist/src/sqlite3.browser.d.ts.map +1 -1
- package/dist/src/sqlite3.browser.js +138 -31
- package/dist/src/sqlite3.browser.js.map +1 -1
- package/dist/src/sqlite3.d.ts +4 -1
- package/dist/src/sqlite3.d.ts.map +1 -1
- package/dist/src/sqlite3.js +14 -5
- package/dist/src/sqlite3.js.map +1 -1
- package/dist/src/sqlite3.wasm.d.ts +4 -1
- package/dist/src/sqlite3.wasm.d.ts.map +1 -1
- package/dist/src/sqlite3.wasm.js +15 -3
- package/dist/src/sqlite3.wasm.js.map +1 -1
- package/dist/src/sqlite3.worker.js +146 -53
- package/dist/src/sqlite3.worker.js.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +11 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +10 -9
- package/src/engine.ts +99 -11
- package/src/index.ts +39 -4
- package/src/schema.ts +67 -11
- package/src/sqlite3-messages.worker.ts +104 -10
- package/src/sqlite3.browser.ts +246 -88
- package/src/sqlite3.ts +19 -5
- package/src/sqlite3.wasm.ts +25 -3
- package/src/sqlite3.worker.ts +170 -49
- package/src/utils.ts +14 -0
|
@@ -17458,7 +17458,12 @@ var fromBase64 = (base64) => {
|
|
|
17458
17458
|
};
|
|
17459
17459
|
|
|
17460
17460
|
// src/sqlite3-messages.worker.ts
|
|
17461
|
-
var resolveValue = (value) =>
|
|
17461
|
+
var resolveValue = (value) => {
|
|
17462
|
+
if (value.type === "simple") {
|
|
17463
|
+
return value.value;
|
|
17464
|
+
}
|
|
17465
|
+
return value.encoding === "clone" ? value.value : fromBase64(value.base64);
|
|
17466
|
+
};
|
|
17462
17467
|
|
|
17463
17468
|
// src/sqlite3.wasm.ts
|
|
17464
17469
|
init_sqlite_wasm();
|
|
@@ -17625,7 +17630,20 @@ var getSqlite3 = async () => {
|
|
|
17625
17630
|
}
|
|
17626
17631
|
return sqlite3Promise;
|
|
17627
17632
|
};
|
|
17628
|
-
var
|
|
17633
|
+
var applyPragmas = (db, pragmas) => {
|
|
17634
|
+
db.exec("PRAGMA journal_mode = WAL");
|
|
17635
|
+
db.exec("PRAGMA foreign_keys = on");
|
|
17636
|
+
db.exec(
|
|
17637
|
+
`PRAGMA synchronous = ${(pragmas?.synchronous ?? "NORMAL").toUpperCase()}`
|
|
17638
|
+
);
|
|
17639
|
+
if (pragmas?.lockingMode) {
|
|
17640
|
+
db.exec(`PRAGMA locking_mode = ${pragmas.lockingMode.toUpperCase()}`);
|
|
17641
|
+
}
|
|
17642
|
+
if (pragmas?.tempStore && pragmas.tempStore !== "DEFAULT") {
|
|
17643
|
+
db.exec(`PRAGMA temp_store = ${pragmas.tempStore.toUpperCase()}`);
|
|
17644
|
+
}
|
|
17645
|
+
};
|
|
17646
|
+
var create = async (directory, options) => {
|
|
17629
17647
|
let statements = /* @__PURE__ */ new Map();
|
|
17630
17648
|
const sqlite32 = await getSqlite3();
|
|
17631
17649
|
let sqliteDb = void 0;
|
|
@@ -17720,8 +17738,7 @@ var create = async (directory) => {
|
|
|
17720
17738
|
if (!sqliteDb) {
|
|
17721
17739
|
throw new Error("Failed to open sqlite database");
|
|
17722
17740
|
}
|
|
17723
|
-
sqliteDb
|
|
17724
|
-
sqliteDb.exec("PRAGMA foreign_keys = on");
|
|
17741
|
+
applyPragmas(sqliteDb, options?.pragmas);
|
|
17725
17742
|
};
|
|
17726
17743
|
return {
|
|
17727
17744
|
close,
|
|
@@ -17756,24 +17773,64 @@ var create = async (directory) => {
|
|
|
17756
17773
|
};
|
|
17757
17774
|
|
|
17758
17775
|
// src/sqlite3.worker.ts
|
|
17776
|
+
var resolveValues = (values, profile = false) => {
|
|
17777
|
+
if (!values || values.length === 0) {
|
|
17778
|
+
return {
|
|
17779
|
+
values: void 0,
|
|
17780
|
+
timing: profile ? {
|
|
17781
|
+
decodeMs: 0,
|
|
17782
|
+
valueCount: 0,
|
|
17783
|
+
blobValueCount: 0,
|
|
17784
|
+
blobBytes: 0
|
|
17785
|
+
} : void 0
|
|
17786
|
+
};
|
|
17787
|
+
}
|
|
17788
|
+
let blobBytes = 0;
|
|
17789
|
+
let blobValueCount = 0;
|
|
17790
|
+
const startedAt = profile ? performance.now() : 0;
|
|
17791
|
+
const resolvedValues = values.map((value) => {
|
|
17792
|
+
const resolved = resolveValue(value);
|
|
17793
|
+
if (profile && resolved instanceof Uint8Array) {
|
|
17794
|
+
blobValueCount++;
|
|
17795
|
+
blobBytes += resolved.byteLength;
|
|
17796
|
+
}
|
|
17797
|
+
return resolved;
|
|
17798
|
+
});
|
|
17799
|
+
return {
|
|
17800
|
+
values: resolvedValues,
|
|
17801
|
+
timing: profile ? {
|
|
17802
|
+
decodeMs: performance.now() - startedAt,
|
|
17803
|
+
valueCount: values.length,
|
|
17804
|
+
blobValueCount,
|
|
17805
|
+
blobBytes
|
|
17806
|
+
} : void 0
|
|
17807
|
+
};
|
|
17808
|
+
};
|
|
17759
17809
|
var SqliteWorkerHandler = class {
|
|
17760
17810
|
databases = /* @__PURE__ */ new Map();
|
|
17761
|
-
async create(databaseId, directory) {
|
|
17762
|
-
const db = await create(directory);
|
|
17811
|
+
async create(databaseId, directory, options) {
|
|
17812
|
+
const db = await create(directory, options);
|
|
17763
17813
|
this.databases.set(databaseId, db);
|
|
17764
17814
|
return db;
|
|
17765
17815
|
}
|
|
17766
17816
|
async onMessage(message) {
|
|
17767
|
-
|
|
17768
|
-
|
|
17769
|
-
|
|
17817
|
+
const profile = Boolean(message.profile);
|
|
17818
|
+
const startedAt = profile ? performance.now() : 0;
|
|
17819
|
+
let decodeMs = 0;
|
|
17820
|
+
let valueCount = 0;
|
|
17821
|
+
let blobValueCount = 0;
|
|
17822
|
+
let blobBytes = 0;
|
|
17823
|
+
const execute = async () => {
|
|
17824
|
+
if (message.type === "create") {
|
|
17825
|
+
await this.create(message.databaseId, message.directory, {
|
|
17826
|
+
pragmas: message.pragmas
|
|
17827
|
+
});
|
|
17828
|
+
return void 0;
|
|
17829
|
+
}
|
|
17770
17830
|
const db = this.databases.get(message.databaseId);
|
|
17771
17831
|
if (!db) {
|
|
17772
|
-
if (message.type === "close") {
|
|
17773
|
-
return;
|
|
17774
|
-
}
|
|
17775
|
-
if (message.type === "drop") {
|
|
17776
|
-
return;
|
|
17832
|
+
if (message.type === "close" || message.type === "drop") {
|
|
17833
|
+
return void 0;
|
|
17777
17834
|
}
|
|
17778
17835
|
if (message.type === "status") {
|
|
17779
17836
|
return "closed";
|
|
@@ -17784,67 +17841,126 @@ var SqliteWorkerHandler = class {
|
|
|
17784
17841
|
}
|
|
17785
17842
|
if (message.type === "exec") {
|
|
17786
17843
|
return db.exec(message.sql);
|
|
17787
|
-
}
|
|
17844
|
+
}
|
|
17845
|
+
if (message.type === "status") {
|
|
17788
17846
|
return db.status();
|
|
17789
|
-
}
|
|
17847
|
+
}
|
|
17848
|
+
if (message.type === "prepare") {
|
|
17790
17849
|
const statementId = message.id;
|
|
17791
17850
|
await db.prepare(message.sql, message.id);
|
|
17792
17851
|
return statementId;
|
|
17793
|
-
}
|
|
17852
|
+
}
|
|
17853
|
+
if (message.type === "close") {
|
|
17794
17854
|
await db.close();
|
|
17795
17855
|
this.databases.delete(message.databaseId);
|
|
17796
|
-
|
|
17856
|
+
return void 0;
|
|
17857
|
+
}
|
|
17858
|
+
if (message.type === "drop") {
|
|
17797
17859
|
await db.drop();
|
|
17798
17860
|
this.databases.delete(message.databaseId);
|
|
17799
|
-
|
|
17861
|
+
return void 0;
|
|
17862
|
+
}
|
|
17863
|
+
if (message.type === "open") {
|
|
17800
17864
|
await db.open();
|
|
17801
17865
|
this.databases.set(message.databaseId, db);
|
|
17802
|
-
|
|
17803
|
-
|
|
17804
|
-
|
|
17805
|
-
const
|
|
17806
|
-
|
|
17807
|
-
|
|
17808
|
-
|
|
17809
|
-
|
|
17810
|
-
|
|
17811
|
-
|
|
17812
|
-
|
|
17813
|
-
|
|
17814
|
-
|
|
17815
|
-
|
|
17816
|
-
|
|
17817
|
-
|
|
17818
|
-
|
|
17819
|
-
|
|
17820
|
-
|
|
17821
|
-
|
|
17822
|
-
|
|
17823
|
-
|
|
17824
|
-
|
|
17825
|
-
|
|
17826
|
-
|
|
17827
|
-
|
|
17828
|
-
|
|
17829
|
-
|
|
17830
|
-
|
|
17831
|
-
|
|
17866
|
+
return void 0;
|
|
17867
|
+
}
|
|
17868
|
+
if (message.type === "run") {
|
|
17869
|
+
const resolved = resolveValues(message.values, profile);
|
|
17870
|
+
decodeMs = resolved.timing?.decodeMs ?? 0;
|
|
17871
|
+
valueCount = resolved.timing?.valueCount ?? 0;
|
|
17872
|
+
blobValueCount = resolved.timing?.blobValueCount ?? 0;
|
|
17873
|
+
blobBytes = resolved.timing?.blobBytes ?? 0;
|
|
17874
|
+
return db.run(message.sql, resolved.values ?? []);
|
|
17875
|
+
}
|
|
17876
|
+
const statement = db.statements.get(message.statementId);
|
|
17877
|
+
if (!statement) {
|
|
17878
|
+
throw new Error("Statement not found with id: " + message.statementId);
|
|
17879
|
+
}
|
|
17880
|
+
if (message.type === "bind") {
|
|
17881
|
+
const resolved = resolveValues(message.values, profile);
|
|
17882
|
+
decodeMs = resolved.timing?.decodeMs ?? 0;
|
|
17883
|
+
valueCount = resolved.timing?.valueCount ?? 0;
|
|
17884
|
+
blobValueCount = resolved.timing?.blobValueCount ?? 0;
|
|
17885
|
+
blobBytes = resolved.timing?.blobBytes ?? 0;
|
|
17886
|
+
return statement.bind(resolved.values ?? []);
|
|
17887
|
+
}
|
|
17888
|
+
if (message.type === "finalize") {
|
|
17889
|
+
return statement.finalize();
|
|
17890
|
+
}
|
|
17891
|
+
if (message.type === "reset") {
|
|
17892
|
+
return statement.reset();
|
|
17893
|
+
}
|
|
17894
|
+
if (message.type === "get") {
|
|
17895
|
+
const resolved = resolveValues(message.values, profile);
|
|
17896
|
+
decodeMs = resolved.timing?.decodeMs ?? 0;
|
|
17897
|
+
valueCount = resolved.timing?.valueCount ?? 0;
|
|
17898
|
+
blobValueCount = resolved.timing?.blobValueCount ?? 0;
|
|
17899
|
+
blobBytes = resolved.timing?.blobBytes ?? 0;
|
|
17900
|
+
return statement.get(resolved.values);
|
|
17901
|
+
}
|
|
17902
|
+
if (message.type === "step") {
|
|
17903
|
+
return statement.step();
|
|
17904
|
+
}
|
|
17905
|
+
if (message.type === "run-statement") {
|
|
17906
|
+
const resolved = resolveValues(message.values, profile);
|
|
17907
|
+
decodeMs = resolved.timing?.decodeMs ?? 0;
|
|
17908
|
+
valueCount = resolved.timing?.valueCount ?? 0;
|
|
17909
|
+
blobValueCount = resolved.timing?.blobValueCount ?? 0;
|
|
17910
|
+
blobBytes = resolved.timing?.blobBytes ?? 0;
|
|
17911
|
+
return statement.run(resolved.values ?? []);
|
|
17912
|
+
}
|
|
17913
|
+
if (message.type === "all") {
|
|
17914
|
+
const resolved = resolveValues(message.values, profile);
|
|
17915
|
+
decodeMs = resolved.timing?.decodeMs ?? 0;
|
|
17916
|
+
valueCount = resolved.timing?.valueCount ?? 0;
|
|
17917
|
+
blobValueCount = resolved.timing?.blobValueCount ?? 0;
|
|
17918
|
+
blobBytes = resolved.timing?.blobBytes ?? 0;
|
|
17919
|
+
return statement.all(resolved.values ?? []);
|
|
17920
|
+
}
|
|
17921
|
+
throw new Error("Unknown statement message type: " + message["type"]);
|
|
17922
|
+
};
|
|
17923
|
+
const execStart = profile ? performance.now() : 0;
|
|
17924
|
+
const result = await execute();
|
|
17925
|
+
const execMs = profile ? performance.now() - execStart - decodeMs : 0;
|
|
17926
|
+
return {
|
|
17927
|
+
result,
|
|
17928
|
+
timing: profile ? {
|
|
17929
|
+
decodeMs,
|
|
17930
|
+
execMs,
|
|
17931
|
+
totalMs: performance.now() - startedAt,
|
|
17932
|
+
valueCount,
|
|
17933
|
+
blobValueCount,
|
|
17934
|
+
blobBytes
|
|
17935
|
+
} : void 0
|
|
17936
|
+
};
|
|
17832
17937
|
}
|
|
17833
17938
|
};
|
|
17834
17939
|
var worker = new SqliteWorkerHandler();
|
|
17835
17940
|
self.onmessage = async (messageEvent) => {
|
|
17941
|
+
const profile = Boolean(messageEvent.data.profile);
|
|
17942
|
+
const startedAt = profile ? performance.now() : 0;
|
|
17836
17943
|
try {
|
|
17837
|
-
const
|
|
17944
|
+
const response = await worker.onMessage(messageEvent.data);
|
|
17838
17945
|
self.postMessage({
|
|
17839
17946
|
type: "response",
|
|
17840
17947
|
id: messageEvent.data.id,
|
|
17841
|
-
result:
|
|
17948
|
+
result: response.result,
|
|
17949
|
+
timing: response.timing
|
|
17842
17950
|
});
|
|
17843
17951
|
} catch (error2) {
|
|
17844
17952
|
self.postMessage({
|
|
17845
17953
|
type: "error",
|
|
17846
17954
|
id: messageEvent.data.id,
|
|
17847
|
-
message: error2?.message
|
|
17955
|
+
message: error2?.message,
|
|
17956
|
+
timing: profile ? {
|
|
17957
|
+
decodeMs: 0,
|
|
17958
|
+
execMs: 0,
|
|
17959
|
+
totalMs: performance.now() - startedAt,
|
|
17960
|
+
valueCount: 0,
|
|
17961
|
+
blobValueCount: 0,
|
|
17962
|
+
blobBytes: 0
|
|
17963
|
+
} : void 0
|
|
17848
17964
|
});
|
|
17849
17965
|
}
|
|
17850
17966
|
};
|