wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 2.41 kB
JavaScript
import{SQLiteStorage}from'./storage.js';export var CachePrefix;(function(a){a['token']='token',a['object']='object',a['personal']='personal',a['table']='table',a['config']='config',a['local_mark']='mark',a['local_info']='info',a['event']='event';}(CachePrefix||(CachePrefix={})));export class Cache{static ['storage'];static ['memory']=new Map();static['setStorage'](a){Cache['storage']=a;}static['hasStorage'](){return Cache['storage']!==undefined&&Cache['storage']!==null;}static['initDefaultStorage'](){Cache['storage']=new SQLiteStorage();}static{Cache['initDefaultStorage']();}static['notExpired'](a){if(!a?.['expire'])return![];if(a['expire']==='INFINITE')return!![];return a['expire']>Date['now']();}static ['DefaultExpireTime']=a=>{if(a)return'INFINITE';return Date['now']()+0x1d4c0;};static async['storeData'](a,b){Cache['hasStorage']()&&await Cache['storage']['put'](a,JSON['stringify'](b)),Cache['memory']['set'](a,b);}static async['read'](a,b,c){const d=a['join'](':');if(!c){if(Cache['memory']['has'](d)){const f=Cache['memory']['get'](d);if(Cache['notExpired'](f))return f;}if(Cache['hasStorage']()){const g=await Cache['storage']['get'](d);if(g){const h=JSON['parse'](g);if(Cache['notExpired'](h))return h;}}}const e=b(a);if(typeof e==='object'&&e!==null&&'then'in e)return e['then'](async i=>{if(!i)return undefined;return await Cache['storeData'](d,i),i;})['catch'](i=>{throw i;});return e&&await Cache['storeData'](d,e),e;}static async['read_many'](a,b,c,d){if(!b||b['length']===0x0)return[];const f=new Array(b['length']),g=[],h=[];for(let j=0x0;j<b['length'];j++){const k=a+':'+b[j];let l;if(!d){if(Cache['memory']['has'](k)){const m=Cache['memory']['get'](k);Cache['notExpired'](m)&&(l=m);}if(!l&&Cache['hasStorage']())try{const n=await Cache['storage']['get'](k);if(n){const o=JSON['parse'](n);Cache['notExpired'](o)&&(l=o,Cache['memory']['set'](k,o));}}catch(p){}}l?f[j]=l:(g['push'](b[j]),h['push'](j));}if(g['length']>0x0)try{const q=await c(a,g);if(q&&q['length']>0x0)for(let r=0x0;r<q['length'];r++){const s=q[r],t=a+':'+g[r],u=h[r];s&&(await Cache['storeData'](t,s),Cache['memory']['set'](t,s),f[u]=s);}}catch(v){}return f['filter'](w=>w!==undefined);}static async['del'](a){const b=a['join'](':');Cache['hasStorage']()?await Cache['storage']['del'](b):Cache['memory']['delete'](b);}static['clear'](){Cache['hasStorage']()?Cache['storage']['clear']():Cache['memory']['clear']();}}