// 📦 IndexedDB Helper /** @type {()=>Promise} */ function openDB() { return new Promise((resolve, reject) => { const request = indexedDB.open('directory-handle-db', 1); request.onupgradeneeded = () => { request.result.createObjectStore('handles'); }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } // 💾 Store a directory handle /** @type {(handle:FileSystemDirectoryHandle)=>Promise} */ export async function setDirectoryHandle(handle) { const db = await openDB(); const tx = db.transaction('handles', 'readwrite'); tx.objectStore('handles').put(handle, 'user-folder'); await tx.done; } // 📂 Retrieve a directory handle /** @type {()=>Promise} */ export async function getDirectoryHandle() { const db = await openDB(); const tx = db.transaction('handles', 'readonly'); return new Promise((resolve, reject) => { const getRequest = tx.objectStore('handles').get('user-folder'); getRequest.onsuccess = () => resolve(getRequest.result); getRequest.onerror = () => { console.error('Error retrieving directory handle:', getRequest.error); return resolve(false); } }); } /** @type {(handle:FileSystemDirectoryHandle, parts:string[])=>Promise} */ export async function drilldown(handle, parts) { try { let filePointer = handle; for(let i=0; i