UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

1 lines • 3.02 kB
import{n as e,r as t}from"./rolldown-runtime-8BhlS34s.js";import{ao as n,io as r}from"./ui-CmSP4d14.js";var i=t({readStoredChatSnapshotRecord:()=>d});function a(e){return e.startsWith(`scope:[`)&&!n(e.slice(e.indexOf(`\0`)+1))}function o(e,t){t===void 0?console.debug(`[chat-snapshot-cache] ${e}`):console.debug(`[chat-snapshot-cache] ${e}`,t)}function s(){try{return globalThis.indexedDB??null}catch(e){return o(`IndexedDB is unavailable`,e),null}}function c(e){return new Promise((t,n)=>{let r=e.open(m,_);r.addEventListener(`upgradeneeded`,e=>{let t=r.result;if(e.oldVersion<4){for(let e of Array.from(t.objectStoreNames))t.deleteObjectStore(e);t.createObjectStore(h,{keyPath:`sessionKey`}),t.createObjectStore(g,{keyPath:`sessionKey`})}}),r.addEventListener(`success`,()=>t(r.result)),r.addEventListener(`error`,()=>n(r.error??Error(`IndexedDB open failed`))),r.addEventListener(`blocked`,()=>n(Error(`IndexedDB open was blocked`)))})}function l(e){return new Promise(t=>{try{let n=e.deleteDatabase(m);n.addEventListener(`success`,()=>t(!0)),n.addEventListener(`error`,()=>t(!1)),n.addEventListener(`blocked`,()=>t(!1))}catch{t(!1)}})}async function u(){let e=s();if(!e)return null;let t;try{t=await c(e)}catch(n){if(o(`resetting cache after IndexedDB open failure`,n),!await l(e))return null;try{t=await c(e)}catch(e){return o(`IndexedDB cache remains unavailable`,e),null}}if(t.addEventListener(`versionchange`,()=>t.close()),t.objectStoreNames.length===2&&t.objectStoreNames.contains(`snapshots`)&&t.objectStoreNames.contains(`snapshotMetadata`))return t;if(t.close(),o(`resetting cache after IndexedDB schema mismatch`),!await l(e))return null;try{let t=await c(e);return t.addEventListener(`versionchange`,()=>t.close()),t}catch(e){return o(`IndexedDB cache reset failed`,e),null}}async function d(e){let t=await u();if(t)try{return a(e)?await new Promise((n,r)=>{let i=t.transaction(h,`readonly`),a=i.objectStore(h).get(e);i.addEventListener(`complete`,()=>n(a.result)),i.addEventListener(`error`,()=>r(i.error??Error(`IndexedDB read failed`))),i.addEventListener(`abort`,()=>r(i.error??Error(`IndexedDB read aborted`)))}):void 0}catch(e){o(`resetting cache after IndexedDB read failure`,e),await f(t);return}finally{t.close()}}async function f(e){e?.close();let t=s();t&&!await l(t)&&o(`IndexedDB cache reset was blocked`)}async function p(e,t){let n=t===`prefix`,r=await u();if(r)try{await new Promise(t=>{let i=r.transaction([h,g],`readwrite`);for(let e of[`complete`,`error`,`abort`])i.addEventListener(e,()=>t(),n?{once:!0}:void 0);for(let t of[h,g]){let r=i.objectStore(t);if(!n){r.delete(e);continue}let a=r.openKeyCursor();a.onsuccess=()=>{let t=a.result;t&&(typeof t.primaryKey==`string`&&t.primaryKey.startsWith(e)&&r.delete(t.primaryKey),t.continue())}}})}catch(e){if(n)throw e}finally{r.close()}}var m,h,g,_;function v(){return(v=e((()=>{r(),m=`openclaw-chat-snapshots`,h=`snapshots`,g=`snapshotMetadata`,_=4})))()}export{v as a,d as c,p as i,f as l,h as n,a as o,o as r,u as s,g as t,i as u};