tinybase
Version:
A reactive data store and sync engine.
2 lines (1 loc) • 1.72 kB
JavaScript
const e=(e,t="",r)=>e.split(t,r),t=globalThis,r=Math,n=r.max,o=r.floor,a=e=>void 0===e,c=(s=a,(e,t,r)=>s(e)?r?.():t(e));var s;const i=(e,t)=>e.map(t),l=(e,t,r)=>e.reduce(t,r),p=Object,u=p.entries,d=e=>new Map(e),f=e("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),m=d(i(f,(e,t)=>[e,t])),g=e=>f[63&e],v=(e,t)=>{return r=m,n=e[t],r?.get(n)??0;var r,n},w=t.crypto?e=>t.crypto.getRandomValues(e):e=>i(e,()=>o(256*r.random())),y=(e=16)=>l(w(new Uint8Array(e)),(e,t)=>e+g(t),""),h=JSON.stringify,x=new t.TextEncoder,E=e=>{let t=2166136261;var r;return r=e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)},x.encode(e).forEach(r),t>>>0},M=(e,t)=>(e^t)>>>0,b=e=>l(u(e),(e,[t,r])=>M(e,O(t,r)^O(t,0)),0),O=(e,t)=>E(e+":"+t),T=(e,t)=>E(h(e??null,(e,t)=>t instanceof Map?p.fromEntries([...t]):t)+":"+t),j=T,A=O,D=b,J=O,N=e=>l(u(e),(e,[t,r])=>M(e,O(t,r)),0),R=O,S=N,U=2**36,V=2**30,k=2**24,q=2**18,z=4096,B=e=>{const t=E(e);return g(t/k)+g(t/q)+g(t/z)+g(t/64)+g(t)},C=(e,t=Date.now)=>{let r=0,o=-1;const s=c(e,B,()=>y(5)),i=e=>{const c=r,[s,i]=a(e)||""==e?[0,0]:p(e);r=n(c,s,t()),o=r==c?r==s?n(o,i):o:r==s?i:-1},l=(e,t,r)=>g(e/U)+g(e/V)+g(e/k)+g(e/q)+g(e/z)+g(e/64)+g(e)+g(t/q)+g(t/z)+g(t/64)+g(t)+(a(r)?s:B(r)),p=e=>[v(e,0)*U+v(e,1)*V+v(e,2)*k+v(e,3)*q+v(e,4)*z+64*v(e,5)+v(e,6),v(e,7)*q+v(e,8)*z+64*v(e,9)+v(e,10),e.slice(11)];return[()=>(i(),l(r,++o)),i,l,p,()=>r,()=>o,()=>s]},F=(e,t)=>(e??0)<(t??0)?-1:1;export{M as addOrRemoveHash,F as defaultSorter,j as getCellHash,A as getCellInRowHash,E as getHash,C as getHlcFunctions,D as getRowHash,J as getRowInTableHash,N as getTableHash,R as getTableInTablesHash,S as getTablesHash,y as getUniqueId,T as getValueHash,O as getValueInValuesHash,b as getValuesHash};