UNPKG

@tobiasberg/graphql-hooks-memcache

Version:
2 lines (1 loc) 745 B
import t from"tiny-lru";function e(t){return function(t){if("string"==typeof t)return function(t){let e=2166136261;for(let r=0;t.length>r;r++)e^=t.charCodeAt(r),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);return e>>>0}(t);throw Error("input must be a string")}(JSON.stringify(t)).toString(36)}export default function({size:r=100,ttl:n=0,debug:i=!1,initialState:o}={}){const s=t(r,n),u=i?t(r,n):void 0;return o&&Object.keys(o).map(t=>{s.set(t,o[t])}),{get:t=>s.get(e(t)),rawGet:t=>s.get(t),rawToKey:t=>{if(!u)throw"not allowed unless in debug mode";return u.get(t)},set:(t,r)=>{const n=e(t);s.set(n,r),u&&u.set(n,t)},delete:t=>s.delete(e(t)),clear:()=>s.clear(),keys:()=>s.keys(),getInitialState:()=>s.keys().reduce((t,e)=>({...t,[e]:s.get(e)}),{})}}