chore: add npm + vite for progressive enhancement

This commit is contained in:
Marc Emmanuel 2026-01-11 20:36:34 +01:00
parent 0c26f0831f
commit 3490ad9865
1374 changed files with 111037 additions and 19 deletions

65
src/libs/indexedDB.js Normal file
View file

@ -0,0 +1,65 @@
let db;
const DATABASE_NAME = "d2";
const STORE_NAME = "s";
const openDatabase = () => {
return new Promise((resolve, reject) => {
if (db) resolve();
if (!window.indexedDB) return reject("IndexedDB is not supported");
const request = window.indexedDB.open(DATABASE_NAME);
request.onsuccess = event => {
db = event.target.result;
resolve();
};
request.onerror = event => {
console.error("IndexedDB request error");
reject();
};
request.onupgradeneeded = event => {
db = event.target.result;
const objectStore = db.createObjectStore(STORE_NAME, {keyPath: "key"});
objectStore.transaction.oncomplete = () => {
db = event.target.result;
};
};
});
};
const ldb = {
get: key => {
return new Promise((resolve, reject) => {
openDatabase().then(() => {
const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME);
if (!hasStore) return reject("IndexedDB: no store found");
const transaction = db.transaction(STORE_NAME, "readonly");
const objectStore = transaction.objectStore(STORE_NAME);
const getRequest = objectStore.get(key);
getRequest.onsuccess = event => {
const result = event.target.result?.value || null;
resolve(result);
};
});
});
},
set: (keyName, value) => {
return new Promise(resolve => {
openDatabase().then(() => {
const transaction = db.transaction(STORE_NAME, "readwrite");
const objectStore = transaction.objectStore([STORE_NAME]);
const putRequest = objectStore.put({key: keyName, value});
putRequest.onsuccess = () => {
resolve();
};
});
});
}
};