feat: use official wasm in worker and cached data info / warning

This commit is contained in:
Samuel 2025-01-21 20:18:39 +01:00
parent 36ff7afa4a
commit 851f19e82e
21 changed files with 492 additions and 398 deletions

View file

@ -1,9 +1,19 @@
import { sql, type NotNull } from "kysely";
import { worker, kyselyDb, SELF_ID, DB_FILENAME } from "./db";
import { cached } from "../lib/db-cache";
import type { MainToWorkerMsg, WorkerToMainMsg } from "~/lib/kysely-wasqlite-worker/type";
import { worker, kyselyDb, SELF_ID, DB_FILENAME, setDbLoaded } from "./db";
import { cached, clearDbCache } from "../lib/db-cache";
import type { MainToWorkerMsg, WorkerToMainMsg } from "~/lib/kysely-official-wasm-worker/type";
export const loadDb = async (statements: string[], progressCallback?: (percentage: number) => void): Promise<void> => {
// try to persist storage, https://web.dev/articles/persistent-storage#request_persistent_storage
try {
if (navigator.storage?.persist && !(await navigator.storage.persisted())) {
await navigator.storage.persist();
}
// biome-ignore lint/suspicious/noEmptyBlockStatements: <explanation>
} catch {}
clearDbCache();
export const loadDb = (statements: string[], progressCallback?: (percentage: number) => void): Promise<void> => {
return new Promise((resolve, reject) => {
const progressListener = ({ data }: MessageEvent<WorkerToMainMsg>) => {
if (data[0] === 5) {
@ -19,12 +29,15 @@ export const loadDb = (statements: string[], progressCallback?: (percentage: num
worker.removeEventListener("message", progressListener);
worker.removeEventListener("message", endListener);
setDbLoaded(true);
resolve();
}
};
worker.addEventListener("message", progressListener);
worker.addEventListener("message", endListener);
worker.addEventListener("message", progressListener);
worker.postMessage([4, DB_FILENAME, true, statements] satisfies MainToWorkerMsg);
});