veriq-client 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- 'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),veriqClient=require('veriq-client');var z=Object.defineProperty;var l=(e,n)=>z(e,"name",{value:n,configurable:true});var P=react.createContext(null);function A({client:e,children:n}){return jsxRuntime.jsx(P.Provider,{value:e,children:n})}l(A,"VeriqProvider");function b(){return react.useContext(P)}l(b,"useVeriqClient");var B=new WeakMap,T={isLoading:false};function F(e,n){let a=B.get(e);a||B.set(e,a=new Map);let i=a.get(n);return i||a.set(n,i={snap:{isLoading:true},listeners:new Set}),i}l(F,"entryFor");function K(e){return e instanceof veriqClient.VeriqError?e:new veriqClient.VeriqError(0,e instanceof Error?e.message:String(e),{cause:e})}l(K,"toVeriqError");function G(e,n){if(e.inflight)return e.inflight;let a=l(i=>{e.snap=i,e.listeners.forEach(c=>c());},"set");return e.snap.data===void 0&&!e.snap.isLoading&&a({...e.snap,isLoading:true}),e.inflight=n().then(i=>a({data:i,isLoading:false})).catch(i=>a({...e.snap.data!==void 0?{data:e.snap.data}:{},error:K(i),isLoading:false})).finally(()=>{e.inflight=void 0;}),e.inflight}l(G,"run");function _(e,n,a={}){let i=b(),c=i!==null&&e!==null&&a.enabled!==false,r=c?F(i,e):null,v=react.useCallback(u=>r?(r.listeners.add(u),()=>r.listeners.delete(u)):()=>{},[r]),m=react.useSyncExternalStore(v,()=>r?.snap??T,()=>r?.snap??T),p=react.useCallback(()=>r&&i?G(r,()=>n(i)):Promise.resolve(),[r,i,n]);return react.useEffect(()=>{if(!r)return;r.snap.data===void 0&&!r.snap.error&&p();let u=l(()=>{(typeof document>"u"||document.visibilityState!=="hidden")&&p();},"onFocus");window.addEventListener("focus",u),document.addEventListener("visibilitychange",u);let s=a.refreshInterval?setInterval(()=>{p();},a.refreshInterval):void 0;return ()=>{window.removeEventListener("focus",u),document.removeEventListener("visibilitychange",u),s&&clearInterval(s);}},[r,p,a.refreshInterval]),{...m.data!==void 0?{data:m.data}:{},...m.error?{error:m.error}:{},isLoading:c?m.isLoading:false,refresh:p}}l(_,"useVeriqQuery");function S(e,n={}){let a=e?`readBalance:${e.toLowerCase()}:${JSON.stringify(n.policy??null)}`:null,i=react.useCallback(c=>c.readBalance({address:e??"",...n.policy?{policy:n.policy}:{}}),[e,n.policy]);return _(a,i,n)}l(S,"useVerifiedBalance");function E(e,n,a={}){let i=e&&n?`readStorage:${e.toLowerCase()}:${n}:${JSON.stringify(a.policy??null)}`:null,c=react.useCallback(r=>r.readStorage({address:e??"",slot:n??"",...a.policy?{policy:a.policy}:{}}),[e,n,a.policy]);return _(i,c,a)}l(E,"useVerifiedStorage");function x(e={}){let n=react.useCallback(a=>a.health(),[]);return _("health",n,{refreshInterval:5e3,...e})}l(x,"useVeriqHealth");function X(e,n={}){let a=react.useCallback(i=>i.getReceipt(e??""),[e]);return _(e?`receipt:${e}`:null,a,n)}l(X,"useReceipt");var g=l((...e)=>e.filter(Boolean).join(" "),"cx"),ae={verified:"Verified",unverified:"Unverified",unsupported:"Unsupported"};function w({status:e="unsupported",error:n,label:a,size:i="sm",className:c,...r}){return jsxRuntime.jsxs("span",{...r,className:g("vq-badge",`vq-badge--${n?"error":e}`,`vq-badge--${i}`,c),children:[jsxRuntime.jsx("span",{className:"vq-badge__dot","aria-hidden":"true"}),a??(n?n.codeName:ae[e])]})}l(w,"ReceiptBadge");function N({value:e,head:n=6,tail:a=6,className:i}){let[c,r]=react.useState(false);return react.useEffect(()=>{if(!c)return;let v=setTimeout(()=>r(false),1200);return ()=>clearTimeout(v)},[c]),jsxRuntime.jsxs("button",{type:"button",className:g("vq-hash",c&&"vq-hash--copied",i),title:e,"aria-label":`Copy ${e}`,onClick:v=>{v.stopPropagation(),navigator.clipboard?.writeText(e).then(()=>r(true));},children:[jsxRuntime.jsx("span",{children:veriqClient.shortHash(e,n,a)}),jsxRuntime.jsx("span",{className:"vq-hash__tick","aria-live":"polite",children:c?"\u2713 Copied":""})]})}l(N,"CopyHash");function ie(e,n){return n&&/storage/i.test(n.identity.method)?(typeof e=="bigint"?e:BigInt(e)).toString():veriqClient.formatEth(e)}l(ie,"defaultValue");function f({label:e,children:n}){return jsxRuntime.jsxs("div",{className:"vq-row",children:[jsxRuntime.jsx("dt",{children:e}),jsxRuntime.jsx("dd",{children:n})]})}l(f,"Row");function se(e){let n=URL.createObjectURL(new Blob([e],{type:"application/json"})),a=document.createElement("a");a.href=n,a.download="receipt.json",a.click(),URL.revokeObjectURL(n);}l(se,"download");function $({receipt:e,value:n,attempts:a=[],error:i,formatValue:c=ie,subtitle:r,badgeExtra:v,raw:m,className:p,...u}){let s=e??null,h=JSON.stringify(m??s??(i?{code:i.code,name:i.codeName,message:i.message}:null),(d,q)=>typeof q=="bigint"?q.toString():q,2);return jsxRuntime.jsxs("section",{...u,className:g("vq-card",p),children:[jsxRuntime.jsxs("div",{className:"vq-card__head",children:[jsxRuntime.jsxs("div",{className:"vq-card__badges",children:[jsxRuntime.jsx(w,{size:"lg",...i?{error:i}:{status:s?.verification.status??"unsupported"}}),v]}),i?jsxRuntime.jsxs("div",{className:"vq-card__error",children:[jsxRuntime.jsxs("div",{className:"vq-mono vq-text-err",children:[i.codeName," \xB7 ",i.code]}),jsxRuntime.jsx("p",{className:"vq-card__meaning",children:i.meaning}),jsxRuntime.jsx("p",{className:"vq-muted",children:i.message}),jsxRuntime.jsxs("p",{className:"vq-hint",children:["\u2192 ",i.hint]})]}):n!=null&&jsxRuntime.jsx("div",{className:"vq-card__value",children:c(n,s)}),r&&jsxRuntime.jsx("div",{className:"vq-card__subtitle",children:r})]}),s&&jsxRuntime.jsxs("dl",{className:"vq-card__section",children:[jsxRuntime.jsxs(f,{label:"Block",children:[jsxRuntime.jsxs("span",{className:"vq-mono",children:["#",veriqClient.formatNumber(s.block.number)," ",s.block.finalized?jsxRuntime.jsx("span",{className:"vq-text-ok",children:"finalized"}):jsxRuntime.jsx("span",{className:"vq-text-warn",children:"not finalized"})]}),jsxRuntime.jsx(N,{value:s.block.hash})]}),jsxRuntime.jsx(f,{label:"State root",children:jsxRuntime.jsx(N,{value:s.block.stateRoot})}),jsxRuntime.jsx(f,{label:"Root source",children:jsxRuntime.jsx("span",{className:g("vq-chip",s.verification.rootSource==="untrusted-rpc"?"vq-chip--warn":"vq-chip--ok"),children:veriqClient.rootSourceLabel(s.verification.rootSource)})}),jsxRuntime.jsx(f,{label:"Verifier",children:jsxRuntime.jsx("span",{className:"vq-mono",children:s.verification.verifierLocation})}),jsxRuntime.jsx(f,{label:"Mechanisms",children:jsxRuntime.jsx("span",{className:"vq-chips",children:s.verification.mechanisms.length===0?jsxRuntime.jsx("span",{className:"vq-muted",children:"none"}):s.verification.mechanisms.map(d=>jsxRuntime.jsx("span",{className:"vq-chip vq-chip--lav",children:d},d))})}),jsxRuntime.jsx(f,{label:"Transport",children:jsxRuntime.jsx("span",{className:"vq-mono",children:s.privacy.transport})}),jsxRuntime.jsx(f,{label:"Comparison",children:jsxRuntime.jsx("span",{className:"vq-mono",children:s.routing.comparison})}),s.warnings.length>0&&jsxRuntime.jsx(f,{label:"Warnings",children:jsxRuntime.jsx("ul",{className:"vq-list",children:s.warnings.map(d=>jsxRuntime.jsxs("li",{className:"vq-text-warn",children:[jsxRuntime.jsx("span",{className:"vq-mono",children:d.code})," \u2014 ",d.message]},d.code))})})]}),jsxRuntime.jsxs("div",{className:"vq-card__section",children:[jsxRuntime.jsx("h4",{className:"vq-card__h",children:"Attempts"}),a.length===0?jsxRuntime.jsx("p",{className:"vq-muted",children:s?`${s.routing.providersTried} provider(s) tried${s.routing.providerLabel?`, answered by ${s.routing.providerLabel}`:""}.`:"No provider was contacted."}):jsxRuntime.jsx("ol",{className:"vq-attempts",children:a.map((d,q)=>jsxRuntime.jsxs("li",{className:g("vq-attempt",d.outcome==="ok"?"vq-attempt--ok":"vq-attempt--rejected"),children:[jsxRuntime.jsx("span",{className:"vq-attempt__dot","aria-hidden":"true"}),jsxRuntime.jsxs("div",{className:"vq-attempt__body",children:[jsxRuntime.jsxs("div",{className:"vq-attempt__line",children:[jsxRuntime.jsx("span",{className:"vq-attempt__provider",children:d.provider}),jsxRuntime.jsx("span",{className:"vq-mono vq-attempt__outcome",children:d.outcome}),jsxRuntime.jsxs("span",{className:"vq-mono vq-attempt__ms",children:[Math.round(d.elapsedMs)," ms"]})]}),d.reason&&jsxRuntime.jsx("p",{className:"vq-attempt__reason",children:d.reason})]})]},q))})]}),s&&jsxRuntime.jsxs("div",{className:"vq-card__section",children:[jsxRuntime.jsx("h4",{className:"vq-card__h",children:"Bindings"}),jsxRuntime.jsxs("dl",{children:[jsxRuntime.jsx(f,{label:"requestBinding",children:jsxRuntime.jsx(N,{value:s.identity.requestBinding})}),jsxRuntime.jsx(f,{label:"resultBinding",children:jsxRuntime.jsx(N,{value:s.identity.resultBinding})}),jsxRuntime.jsx(f,{label:"requestId",children:jsxRuntime.jsx(N,{value:s.identity.requestId,head:8})})]})]}),jsxRuntime.jsxs("details",{className:"vq-raw",children:[jsxRuntime.jsx("summary",{children:"Raw JSON"}),jsxRuntime.jsx("pre",{children:h})]}),jsxRuntime.jsxs("button",{type:"button",className:"vq-pill",onClick:()=>se(h),children:[jsxRuntime.jsx("span",{children:"Download receipt.json"}),jsxRuntime.jsx("span",{className:"vq-pill__circle","aria-hidden":"true",children:jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M12 4v12M6 10l6 6 6-6M5 20h14"})})})]})]})}l($,"ReceiptCard");function re({address:e,slot:n,format:a="eth",policy:i,refreshInterval:c,className:r,...v}){let m={...i?{policy:i}:{},...c?{refreshInterval:c}:{}},p=S(n?null:e,m),u=E(n?e:null,n??null,m),s=n?u:p,[h,d]=react.useState(false),q=react.useRef(null),C=react.useId();if(react.useEffect(()=>{if(!h)return;let R=l(k=>k.key==="Escape"&&d(false),"onKey"),L=l(k=>q.current&&!q.current.contains(k.target)&&d(false),"onDown");return document.addEventListener("keydown",R),document.addEventListener("mousedown",L),()=>{document.removeEventListener("keydown",R),document.removeEventListener("mousedown",L);}},[h]),s.isLoading&&!s.data)return jsxRuntime.jsxs("span",{...v,className:g("vq-value",r),"aria-busy":"true",children:[jsxRuntime.jsx("span",{className:"vq-skeleton vq-skeleton--value"}),jsxRuntime.jsx("span",{className:"vq-skeleton vq-skeleton--badge"})]});if(s.error&&!s.data)return jsxRuntime.jsxs("span",{...v,role:"alert",className:g("vq-value vq-value--error",r),children:[jsxRuntime.jsx(w,{error:s.error}),jsxRuntime.jsxs("span",{className:"vq-value__hint",children:[jsxRuntime.jsx("strong",{children:s.error.name})," ",s.error.hint]})]});if(!s.data)return null;let V=s.data.value,D=typeof a=="function"?a(V):a==="raw"||n?BigInt(V).toString():veriqClient.formatEth(V);return jsxRuntime.jsxs("span",{...v,ref:q,className:g("vq-value vq-fade",r),children:[jsxRuntime.jsxs("button",{type:"button",className:"vq-value__button","aria-expanded":h,"aria-controls":C,onClick:()=>d(R=>!R),children:[jsxRuntime.jsx("span",{className:"vq-value__num",children:D}),jsxRuntime.jsx(w,{status:s.data.receipt.verification.status})]}),h&&jsxRuntime.jsx("span",{id:C,role:"dialog","aria-label":"Trust receipt",className:"vq-popover vq-fade",children:jsxRuntime.jsx($,{receipt:s.data.receipt,value:V,attempts:s.data.attempts})})]})}l(re,"VerifiedValue");function oe({health:e,address:n="127.0.0.1:8547",refreshInterval:a,className:i,...c}){let r=e!==void 0,v=b()!==null,m=x({enabled:!r&&v,...a?{refreshInterval:a}:{}}),p=r?e:m.data??null,u=p!=null&&(r||!m.error),s=u&&(p.devMode||p.rootSource==="untrusted-rpc");return jsxRuntime.jsxs("span",{...c,className:g("vq-status-group",i),children:[jsxRuntime.jsxs("span",{className:g("vq-status",u?"vq-status--online":"vq-status--offline"),role:"status",children:[jsxRuntime.jsx("span",{className:"vq-status__dot","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"vq-status__label",children:u?`Engine online \xB7 ${p.bind??n}`:!r&&m.isLoading?"Checking engine\u2026":"Engine offline"})]}),s&&jsxRuntime.jsx("span",{className:"vq-status vq-status--dev",children:"DEV MODE \u2014 unverified"})]})}l(oe,"EngineStatus");exports.CopyHash=N;exports.EngineStatus=oe;exports.ReceiptBadge=w;exports.ReceiptCard=$;exports.VerifiedValue=re;exports.VeriqProvider=A;exports.useReceipt=X;exports.useVerifiedBalance=S;exports.useVerifiedStorage=E;exports.useVeriqClient=b;exports.useVeriqHealth=x;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),veriqClient=require('veriq-client');var z=Object.defineProperty;var l=(e,n)=>z(e,"name",{value:n,configurable:true});var P=react.createContext(null);function A({client:e,children:n}){return jsxRuntime.jsx(P.Provider,{value:e,children:n})}l(A,"VeriqProvider");function b(){return react.useContext(P)}l(b,"useVeriqClient");var B=new WeakMap,T={isLoading:false};function F(e,n){let i=B.get(e);i||B.set(e,i=new Map);let s=i.get(n);return s||i.set(n,s={snap:{isLoading:true},listeners:new Set}),s}l(F,"entryFor");function K(e){return e instanceof veriqClient.VeriqError?e:new veriqClient.VeriqError(0,e instanceof Error?e.message:String(e),{cause:e})}l(K,"toVeriqError");function G(e,n){if(e.inflight)return e.inflight;let i=l(s=>{e.snap=s,e.listeners.forEach(c=>c());},"set");return e.snap.data===void 0&&!e.snap.isLoading&&i({...e.snap,isLoading:true}),e.inflight=n().then(s=>i({data:s,isLoading:false})).catch(s=>i({...e.snap.data!==void 0?{data:e.snap.data}:{},error:K(s),isLoading:false})).finally(()=>{e.inflight=void 0;}),e.inflight}l(G,"run");function _(e,n,i={}){let s=b(),c=s!==null&&e!==null&&i.enabled!==false,r=c?F(s,e):null,v=react.useCallback(u=>r?(r.listeners.add(u),()=>r.listeners.delete(u)):()=>{},[r]),m=react.useSyncExternalStore(v,()=>r?.snap??T,()=>r?.snap??T),p=react.useCallback(()=>r&&s?G(r,()=>n(s)):Promise.resolve(),[r,s,n]);return react.useEffect(()=>{if(!r)return;r.snap.data===void 0&&!r.snap.error&&p();let u=l(()=>{(typeof document>"u"||document.visibilityState!=="hidden")&&p();},"onFocus");window.addEventListener("focus",u),document.addEventListener("visibilitychange",u);let a=i.refreshInterval?setInterval(()=>{p();},i.refreshInterval):void 0;return ()=>{window.removeEventListener("focus",u),document.removeEventListener("visibilitychange",u),a&&clearInterval(a);}},[r,p,i.refreshInterval]),{...m.data!==void 0?{data:m.data}:{},...m.error?{error:m.error}:{},isLoading:c?m.isLoading:false,refresh:p}}l(_,"useVeriqQuery");function S(e,n={}){let i=e?`readBalance:${e.toLowerCase()}:${JSON.stringify(n.policy??null)}`:null,s=react.useCallback(c=>c.readBalance({address:e??"",...n.policy?{policy:n.policy}:{}}),[e,n.policy]);return _(i,s,n)}l(S,"useVerifiedBalance");function E(e,n,i={}){let s=e&&n?`readStorage:${e.toLowerCase()}:${n}:${JSON.stringify(i.policy??null)}`:null,c=react.useCallback(r=>r.readStorage({address:e??"",slot:n??"",...i.policy?{policy:i.policy}:{}}),[e,n,i.policy]);return _(s,c,i)}l(E,"useVerifiedStorage");function x(e={}){let n=react.useCallback(i=>i.health(),[]);return _("health",n,{refreshInterval:5e3,...e})}l(x,"useVeriqHealth");function X(e,n={}){let i=react.useCallback(s=>s.getReceipt(e??""),[e]);return _(e?`receipt:${e}`:null,i,n)}l(X,"useReceipt");var g=l((...e)=>e.filter(Boolean).join(" "),"cx"),ae={verified:"Verified",unverified:"Unverified",unsupported:"Unsupported"};function w({status:e="unsupported",error:n,label:i,size:s="sm",className:c,...r}){return jsxRuntime.jsxs("span",{...r,className:g("vq-badge",`vq-badge--${n?"error":e}`,`vq-badge--${s}`,c),children:[jsxRuntime.jsx("span",{className:"vq-badge__dot","aria-hidden":"true"}),i??(n?n.codeName:ae[e])]})}l(w,"ReceiptBadge");function N({value:e,head:n=6,tail:i=6,className:s}){let[c,r]=react.useState(false);return react.useEffect(()=>{if(!c)return;let v=setTimeout(()=>r(false),1200);return ()=>clearTimeout(v)},[c]),jsxRuntime.jsxs("button",{type:"button",className:g("vq-hash",c&&"vq-hash--copied",s),title:e,"aria-label":`Copy ${e}`,onClick:v=>{v.stopPropagation(),navigator.clipboard?.writeText(e).then(()=>r(true));},children:[jsxRuntime.jsx("span",{children:veriqClient.shortHash(e,n,i)}),jsxRuntime.jsx("span",{className:"vq-hash__tick","aria-live":"polite",children:c?"\u2713 Copied":""})]})}l(N,"CopyHash");function ie(e,n){return n&&/storage/i.test(n.identity.method)?(typeof e=="bigint"?e:BigInt(e)).toString():veriqClient.formatEth(e)}l(ie,"defaultValue");function f({label:e,children:n}){return jsxRuntime.jsxs("div",{className:"vq-row",children:[jsxRuntime.jsx("dt",{children:e}),jsxRuntime.jsx("dd",{children:n})]})}l(f,"Row");function se(e){let n=URL.createObjectURL(new Blob([e],{type:"application/json"})),i=document.createElement("a");i.href=n,i.download="receipt.json",i.click(),URL.revokeObjectURL(n);}l(se,"download");function I({receipt:e,value:n,attempts:i=[],error:s,formatValue:c=ie,subtitle:r,badgeExtra:v,raw:m,className:p,...u}){let a=e??null,h=JSON.stringify(m??a??(s?{code:s.code,name:s.codeName,message:s.message}:null),(d,q)=>typeof q=="bigint"?q.toString():q,2);return jsxRuntime.jsxs("section",{...u,className:g("vq-card",p),children:[jsxRuntime.jsxs("div",{className:"vq-card__head",children:[jsxRuntime.jsxs("div",{className:"vq-card__badges",children:[jsxRuntime.jsx(w,{size:"lg",...s?{error:s}:{status:a?.verification.status??"unsupported"}}),v]}),s?jsxRuntime.jsxs("div",{className:"vq-card__error",children:[jsxRuntime.jsxs("div",{className:"vq-mono vq-text-err",children:[s.codeName," \xB7 ",s.code]}),jsxRuntime.jsx("p",{className:"vq-card__meaning",children:s.meaning}),jsxRuntime.jsx("p",{className:"vq-muted",children:s.message}),jsxRuntime.jsxs("p",{className:"vq-hint",children:["\u2192 ",s.hint]})]}):n!=null&&jsxRuntime.jsx("div",{className:"vq-card__value",children:c(n,a)}),r&&jsxRuntime.jsx("div",{className:"vq-card__subtitle",children:r})]}),a&&jsxRuntime.jsxs("dl",{className:"vq-card__section",children:[jsxRuntime.jsxs(f,{label:"Block",children:[jsxRuntime.jsxs("span",{className:"vq-mono",children:["#",veriqClient.formatNumber(a.block.number)," ",a.block.finalized?jsxRuntime.jsx("span",{className:"vq-text-ok",children:"finalized"}):jsxRuntime.jsx("span",{className:"vq-text-warn",children:"not finalized"})]}),jsxRuntime.jsx(N,{value:a.block.hash})]}),jsxRuntime.jsx(f,{label:"State root",children:jsxRuntime.jsx(N,{value:a.block.stateRoot})}),jsxRuntime.jsx(f,{label:"Root source",children:jsxRuntime.jsx("span",{className:g("vq-chip",a.verification.rootSource==="untrusted-rpc"?"vq-chip--warn":"vq-chip--ok"),children:veriqClient.rootSourceLabel(a.verification.rootSource)})}),jsxRuntime.jsx(f,{label:"Verifier",children:jsxRuntime.jsx("span",{className:"vq-mono",children:a.verification.verifierLocation})}),jsxRuntime.jsx(f,{label:"Mechanisms",children:jsxRuntime.jsx("span",{className:"vq-chips",children:a.verification.mechanisms.length===0?jsxRuntime.jsx("span",{className:"vq-muted",children:"none"}):a.verification.mechanisms.map(d=>jsxRuntime.jsx("span",{className:"vq-chip vq-chip--lav",children:d},d))})}),jsxRuntime.jsx(f,{label:"Transport",children:jsxRuntime.jsx("span",{className:"vq-mono",children:a.privacy.mechanism?`${a.privacy.transport} (${a.privacy.mechanism})`:a.privacy.transport})}),jsxRuntime.jsx(f,{label:"Comparison",children:jsxRuntime.jsx("span",{className:"vq-mono",children:a.routing.comparison})}),a.warnings.length>0&&jsxRuntime.jsx(f,{label:"Warnings",children:jsxRuntime.jsx("ul",{className:"vq-list",children:a.warnings.map(d=>jsxRuntime.jsxs("li",{className:"vq-text-warn",children:[jsxRuntime.jsx("span",{className:"vq-mono",children:d.code})," \u2014 ",d.message]},d.code))})})]}),jsxRuntime.jsxs("div",{className:"vq-card__section",children:[jsxRuntime.jsx("h4",{className:"vq-card__h",children:"Attempts"}),i.length===0?jsxRuntime.jsx("p",{className:"vq-muted",children:a?`${a.routing.providersTried} provider(s) tried${a.routing.providerLabel?`, answered by ${a.routing.providerLabel}`:""}.`:"No provider was contacted."}):jsxRuntime.jsx("ol",{className:"vq-attempts",children:i.map((d,q)=>jsxRuntime.jsxs("li",{className:g("vq-attempt",d.outcome==="ok"?"vq-attempt--ok":"vq-attempt--rejected"),children:[jsxRuntime.jsx("span",{className:"vq-attempt__dot","aria-hidden":"true"}),jsxRuntime.jsxs("div",{className:"vq-attempt__body",children:[jsxRuntime.jsxs("div",{className:"vq-attempt__line",children:[jsxRuntime.jsx("span",{className:"vq-attempt__provider",children:d.provider}),jsxRuntime.jsx("span",{className:"vq-mono vq-attempt__outcome",children:d.outcome}),jsxRuntime.jsxs("span",{className:"vq-mono vq-attempt__ms",children:[Math.round(d.elapsedMs)," ms"]})]}),d.reason&&jsxRuntime.jsx("p",{className:"vq-attempt__reason",children:d.reason})]})]},q))})]}),a&&jsxRuntime.jsxs("div",{className:"vq-card__section",children:[jsxRuntime.jsx("h4",{className:"vq-card__h",children:"Bindings"}),jsxRuntime.jsxs("dl",{children:[jsxRuntime.jsx(f,{label:"requestBinding",children:jsxRuntime.jsx(N,{value:a.identity.requestBinding})}),jsxRuntime.jsx(f,{label:"resultBinding",children:jsxRuntime.jsx(N,{value:a.identity.resultBinding})}),jsxRuntime.jsx(f,{label:"requestId",children:jsxRuntime.jsx(N,{value:a.identity.requestId,head:8})})]})]}),jsxRuntime.jsxs("details",{className:"vq-raw",children:[jsxRuntime.jsx("summary",{children:"Raw JSON"}),jsxRuntime.jsx("pre",{children:h})]}),jsxRuntime.jsxs("button",{type:"button",className:"vq-pill",onClick:()=>se(h),children:[jsxRuntime.jsx("span",{children:"Download receipt.json"}),jsxRuntime.jsx("span",{className:"vq-pill__circle","aria-hidden":"true",children:jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M12 4v12M6 10l6 6 6-6M5 20h14"})})})]})]})}l(I,"ReceiptCard");function re({address:e,slot:n,format:i="eth",policy:s,refreshInterval:c,className:r,...v}){let m={...s?{policy:s}:{},...c?{refreshInterval:c}:{}},p=S(n?null:e,m),u=E(n?e:null,n??null,m),a=n?u:p,[h,d]=react.useState(false),q=react.useRef(null),C=react.useId();if(react.useEffect(()=>{if(!h)return;let R=l(k=>k.key==="Escape"&&d(false),"onKey"),L=l(k=>q.current&&!q.current.contains(k.target)&&d(false),"onDown");return document.addEventListener("keydown",R),document.addEventListener("mousedown",L),()=>{document.removeEventListener("keydown",R),document.removeEventListener("mousedown",L);}},[h]),a.isLoading&&!a.data)return jsxRuntime.jsxs("span",{...v,className:g("vq-value",r),"aria-busy":"true",children:[jsxRuntime.jsx("span",{className:"vq-skeleton vq-skeleton--value"}),jsxRuntime.jsx("span",{className:"vq-skeleton vq-skeleton--badge"})]});if(a.error&&!a.data)return jsxRuntime.jsxs("span",{...v,role:"alert",className:g("vq-value vq-value--error",r),children:[jsxRuntime.jsx(w,{error:a.error}),jsxRuntime.jsxs("span",{className:"vq-value__hint",children:[jsxRuntime.jsx("strong",{children:a.error.name})," ",a.error.hint]})]});if(!a.data)return null;let V=a.data.value,D=typeof i=="function"?i(V):i==="raw"||n?BigInt(V).toString():veriqClient.formatEth(V);return jsxRuntime.jsxs("span",{...v,ref:q,className:g("vq-value vq-fade",r),children:[jsxRuntime.jsxs("button",{type:"button",className:"vq-value__button","aria-expanded":h,"aria-controls":C,onClick:()=>d(R=>!R),children:[jsxRuntime.jsx("span",{className:"vq-value__num",children:D}),jsxRuntime.jsx(w,{status:a.data.receipt.verification.status})]}),h&&jsxRuntime.jsx("span",{id:C,role:"dialog","aria-label":"Trust receipt",className:"vq-popover vq-fade",children:jsxRuntime.jsx(I,{receipt:a.data.receipt,value:V,attempts:a.data.attempts})})]})}l(re,"VerifiedValue");function oe({health:e,address:n,refreshInterval:i,className:s,...c}){let r=e!==void 0,v=b()!==null,m=x({enabled:!r&&v,...i?{refreshInterval:i}:{}}),p=r?e:m.data??null,u=p!=null&&(r||!m.error),a=u&&(p.devMode||p.rootSource==="untrusted-rpc");return jsxRuntime.jsxs("span",{...c,className:g("vq-status-group",s),children:[jsxRuntime.jsxs("span",{className:g("vq-status",u?"vq-status--online":"vq-status--offline"),role:"status",children:[jsxRuntime.jsx("span",{className:"vq-status__dot","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"vq-status__label",children:u?`Engine online \xB7 ${n??p.bind??"127.0.0.1:8547"}`:!r&&m.isLoading?"Checking engine\u2026":"Engine offline"})]}),a&&jsxRuntime.jsx("span",{className:"vq-status vq-status--dev",children:"DEV MODE \u2014 unverified"})]})}l(oe,"EngineStatus");exports.CopyHash=N;exports.EngineStatus=oe;exports.ReceiptBadge=w;exports.ReceiptCard=I;exports.VerifiedValue=re;exports.VeriqProvider=A;exports.useReceipt=X;exports.useVerifiedBalance=S;exports.useVerifiedStorage=E;exports.useVeriqClient=b;exports.useVeriqHealth=x;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/provider.tsx","../../src/react/hooks.ts","../../src/react/components.tsx"],"names":["VeriqContext","createContext","VeriqProvider","client","children","jsx","__name","useVeriqClient","useContext","caches","IDLE","entryFor","key","map","e","toVeriqError","err","VeriqError","run","fetcher","set","snap","l","data","useVeriqQuery","opts","active","entry","subscribe","useCallback","cb","useSyncExternalStore","refresh","useEffect","onFocus","timer","useVerifiedBalance","address","useVerifiedStorage","slot","c","useVeriqHealth","useReceipt","id","cx","STATUS_LABEL","ReceiptBadge","status","error","label","size","className","rest","jsxs","CopyHash","value","head","tail","copied","setCopied","useState","t","shortHash","defaultValue","receipt","formatEth","Row","download","json","url","ReceiptCard","attempts","formatValue","subtitle","badgeExtra","raw","r","_k","v","formatNumber","rootSourceLabel","m","w","a","i","VerifiedValue","format","policy","refreshInterval","balance","storage","q","open","setOpen","wrapRef","useRef","popId","useId","onKey","onDown","shown","o","EngineStatus","health","controlled","hasClient","h","online","dev"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createContext, useContext, type ReactNode } from 'react'\r\nimport type { VeriqClient } from 'veriq-client'\r\n\r\nconst VeriqContext = createContext<VeriqClient | null>(null)\r\n\r\n/**\r\n * Makes a Veriq client available to the hooks and components below it.\r\n * @example\r\n * const veriq = createVeriq()\r\n * <VeriqProvider client={veriq}><App /></VeriqProvider>\r\n */\r\nexport function VeriqProvider({ client, children }: { client: VeriqClient; children?: ReactNode }) {\r\n return <VeriqContext.Provider value={client}>{children}</VeriqContext.Provider>\r\n}\r\n\r\n/**\r\n * The client from the nearest VeriqProvider (null if there is none).\r\n * @example const veriq = useVeriqClient()\r\n */\r\nexport function useVeriqClient(): VeriqClient | null {\r\n return useContext(VeriqContext)\r\n}\r\n","import { useCallback, useEffect, useSyncExternalStore } from 'react'\r\nimport { VeriqError, type EngineHealth, type Hex, type Policy, type TrustReceipt, type VeriqClient, type VerifiedResult } from 'veriq-client'\r\nimport { useVeriqClient } from './provider'\r\n\r\nexport interface QueryState<T> {\r\n data?: T\r\n error?: VeriqError\r\n isLoading: boolean\r\n /** Re-fetch now (deduplicated with any request already in flight). */\r\n refresh: () => Promise<void>\r\n}\r\n\r\nexport interface HookOptions {\r\n /** Poll every N ms. Default: no polling. */\r\n refreshInterval?: number\r\n /** Set false to skip fetching. Default true. */\r\n enabled?: boolean\r\n}\r\n\r\ninterface Snapshot {\r\n data?: unknown\r\n error?: VeriqError\r\n isLoading: boolean\r\n}\r\n\r\ninterface Entry {\r\n snap: Snapshot\r\n inflight?: Promise<void>\r\n listeners: Set<() => void>\r\n}\r\n\r\n// Tiny cache: one Map per client, keyed by method + params. No external data library.\r\nconst caches = new WeakMap<VeriqClient, Map<string, Entry>>()\r\nconst IDLE: Snapshot = { isLoading: false }\r\n\r\nfunction entryFor(client: VeriqClient, key: string): Entry {\r\n let map = caches.get(client)\r\n if (!map) caches.set(client, (map = new Map()))\r\n let e = map.get(key)\r\n if (!e) map.set(key, (e = { snap: { isLoading: true }, listeners: new Set() }))\r\n return e\r\n}\r\n\r\nfunction toVeriqError(err: unknown): VeriqError {\r\n return err instanceof VeriqError ? err : new VeriqError(0, err instanceof Error ? err.message : String(err), { cause: err })\r\n}\r\n\r\nfunction run(e: Entry, fetcher: () => Promise<unknown>): Promise<void> {\r\n if (e.inflight) return e.inflight\r\n const set = (snap: Snapshot) => {\r\n e.snap = snap\r\n e.listeners.forEach((l) => l())\r\n }\r\n if (e.snap.data === undefined && !e.snap.isLoading) set({ ...e.snap, isLoading: true })\r\n e.inflight = fetcher()\r\n .then((data) => set({ data, isLoading: false }))\r\n .catch((err: unknown) => set({ ...(e.snap.data !== undefined ? { data: e.snap.data } : {}), error: toVeriqError(err), isLoading: false }))\r\n .finally(() => {\r\n e.inflight = undefined\r\n })\r\n return e.inflight\r\n}\r\n\r\nfunction useVeriqQuery<T>(key: string | null, fetcher: (c: VeriqClient) => Promise<T>, opts: HookOptions = {}): QueryState<T> {\r\n const client = useVeriqClient()\r\n const active = client !== null && key !== null && opts.enabled !== false\r\n const entry = active ? entryFor(client, key) : null\r\n\r\n const subscribe = useCallback((cb: () => void) => {\r\n if (!entry) return () => {}\r\n entry.listeners.add(cb)\r\n return () => entry.listeners.delete(cb)\r\n }, [entry])\r\n const snap = useSyncExternalStore(subscribe, () => entry?.snap ?? IDLE, () => entry?.snap ?? IDLE)\r\n\r\n const refresh = useCallback(() => (entry && client ? run(entry, () => fetcher(client)) : Promise.resolve()), [entry, client, fetcher])\r\n\r\n useEffect(() => {\r\n if (!entry) return\r\n if (entry.snap.data === undefined && !entry.snap.error) void refresh()\r\n // Revalidate when the tab regains focus.\r\n const onFocus = () => {\r\n if (typeof document === 'undefined' || document.visibilityState !== 'hidden') void refresh()\r\n }\r\n window.addEventListener('focus', onFocus)\r\n document.addEventListener('visibilitychange', onFocus)\r\n const timer = opts.refreshInterval ? setInterval(() => void refresh(), opts.refreshInterval) : undefined\r\n return () => {\r\n window.removeEventListener('focus', onFocus)\r\n document.removeEventListener('visibilitychange', onFocus)\r\n if (timer) clearInterval(timer)\r\n }\r\n }, [entry, refresh, opts.refreshInterval])\r\n\r\n return {\r\n ...(snap.data !== undefined ? { data: snap.data as T } : {}),\r\n ...(snap.error ? { error: snap.error } : {}),\r\n isLoading: active ? snap.isLoading : false,\r\n refresh,\r\n }\r\n}\r\n\r\nexport interface ReadHookOptions extends HookOptions {\r\n policy?: Policy\r\n}\r\n\r\n/**\r\n * Proven balance for an address, cached and shared across components.\r\n * @example const { data, error, isLoading } = useVerifiedBalance('0x…')\r\n */\r\nexport function useVerifiedBalance(address: string | null | undefined, opts: ReadHookOptions = {}): QueryState<VerifiedResult<bigint>> {\r\n const key = address ? `readBalance:${address.toLowerCase()}:${JSON.stringify(opts.policy ?? null)}` : null\r\n const fetcher = useCallback((c: VeriqClient) => c.readBalance({ address: address ?? '', ...(opts.policy ? { policy: opts.policy } : {}) }), [address, opts.policy])\r\n return useVeriqQuery(key, fetcher, opts)\r\n}\r\n\r\n/**\r\n * Proven storage slot value.\r\n * @example const { data } = useVerifiedStorage(contract, '0x0')\r\n */\r\nexport function useVerifiedStorage(address: string | null | undefined, slot: string | null | undefined, opts: ReadHookOptions = {}): QueryState<VerifiedResult<Hex>> {\r\n const key = address && slot ? `readStorage:${address.toLowerCase()}:${slot}:${JSON.stringify(opts.policy ?? null)}` : null\r\n const fetcher = useCallback(\r\n (c: VeriqClient) => c.readStorage({ address: address ?? '', slot: slot ?? '', ...(opts.policy ? { policy: opts.policy } : {}) }),\r\n [address, slot, opts.policy],\r\n )\r\n return useVeriqQuery(key, fetcher, opts)\r\n}\r\n\r\n/**\r\n * Engine health, polled every 5 s by default.\r\n * @example const { data, error } = useVeriqHealth()\r\n */\r\nexport function useVeriqHealth(opts: HookOptions = {}): QueryState<EngineHealth> {\r\n const fetcher = useCallback((c: VeriqClient) => c.health(), [])\r\n return useVeriqQuery('health', fetcher, { refreshInterval: 5000, ...opts })\r\n}\r\n\r\n/**\r\n * A stored Trust Receipt by request id.\r\n * @example const { data: receipt } = useReceipt(id)\r\n */\r\nexport function useReceipt(id: string | null | undefined, opts: HookOptions = {}): QueryState<TrustReceipt> {\r\n const fetcher = useCallback((c: VeriqClient) => c.getReceipt(id ?? ''), [id])\r\n return useVeriqQuery(id ? `receipt:${id}` : null, fetcher, opts)\r\n}\r\n","import { useEffect, useId, useRef, useState, type HTMLAttributes, type ReactNode } from 'react'\r\nimport {\r\n formatEth,\r\n formatNumber,\r\n rootSourceLabel,\r\n shortHash,\r\n type Attempt,\r\n type EngineHealth,\r\n type Policy,\r\n type TrustReceipt,\r\n type VerificationStatus,\r\n type VeriqError,\r\n} from 'veriq-client'\r\nimport { useVeriqClient } from './provider'\r\nimport { useVerifiedBalance, useVerifiedStorage, useVeriqHealth } from './hooks'\r\n\r\nconst cx = (...c: (string | false | null | undefined)[]) => c.filter(Boolean).join(' ')\r\n\r\ntype DivProps = Omit<HTMLAttributes<HTMLElement>, 'children'>\r\n\r\n// ---------------------------------------------------------------- ReceiptBadge\r\n\r\nexport type BadgeSize = 'sm' | 'md' | 'lg'\r\n\r\nexport interface ReceiptBadgeProps extends DivProps {\r\n status?: VerificationStatus\r\n /** Shows the error's code name in the error colour. Takes precedence over `status`. */\r\n error?: VeriqError | null\r\n /** Override the label text. */\r\n label?: ReactNode\r\n size?: BadgeSize\r\n}\r\n\r\nconst STATUS_LABEL: Record<VerificationStatus, string> = { verified: 'Verified', unverified: 'Unverified', unsupported: 'Unsupported' }\r\n\r\n/**\r\n * Status pill with a small dot: verified (green), unverified (amber), unsupported (lavender), error (rose).\r\n * @example <ReceiptBadge status={receipt.verification.status} />\r\n * @example <ReceiptBadge error={err} />\r\n */\r\nexport function ReceiptBadge({ status = 'unsupported', error, label, size = 'sm', className, ...rest }: ReceiptBadgeProps) {\r\n const kind = error ? 'error' : status\r\n return (\r\n <span {...rest} className={cx('vq-badge', `vq-badge--${kind}`, `vq-badge--${size}`, className)}>\r\n <span className=\"vq-badge__dot\" aria-hidden=\"true\" />\r\n {label ?? (error ? error.codeName : STATUS_LABEL[status])}\r\n </span>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- Hash (copy on click)\r\n\r\n/**\r\n * Monospace, middle-truncated hash that copies on click and shows a \"Copied\" tick.\r\n * @example <CopyHash value={receipt.block.stateRoot} />\r\n */\r\nexport function CopyHash({ value, head = 6, tail = 6, className }: { value: string; head?: number; tail?: number; className?: string }) {\r\n const [copied, setCopied] = useState(false)\r\n useEffect(() => {\r\n if (!copied) return\r\n const t = setTimeout(() => setCopied(false), 1200)\r\n return () => clearTimeout(t)\r\n }, [copied])\r\n return (\r\n <button\r\n type=\"button\"\r\n className={cx('vq-hash', copied && 'vq-hash--copied', className)}\r\n title={value}\r\n aria-label={`Copy ${value}`}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n void navigator.clipboard?.writeText(value).then(() => setCopied(true))\r\n }}\r\n >\r\n <span>{shortHash(value, head, tail)}</span>\r\n <span className=\"vq-hash__tick\" aria-live=\"polite\">{copied ? '✓ Copied' : ''}</span>\r\n </button>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- ReceiptCard\r\n\r\nexport interface ReceiptCardProps extends DivProps {\r\n receipt?: TrustReceipt | null\r\n /** Proven value: wei for balances, hex or bigint for storage. */\r\n value?: bigint | string | null\r\n attempts?: Attempt[]\r\n /** Show a failed read instead of a receipt. */\r\n error?: VeriqError | null\r\n /** Custom value formatter. Default: ETH for balances, raw for storage. */\r\n formatValue?: (value: bigint | string, receipt: TrustReceipt | null) => ReactNode\r\n /** Extra line under the value (method, address, time…). */\r\n subtitle?: ReactNode\r\n /** Extra elements next to the status badge. */\r\n badgeExtra?: ReactNode\r\n /** What \"Raw JSON\" and the download contain. Default: the receipt. */\r\n raw?: unknown\r\n}\r\n\r\nfunction defaultValue(value: bigint | string, receipt: TrustReceipt | null): ReactNode {\r\n if (receipt && /storage/i.test(receipt.identity.method)) {\r\n const v = typeof value === 'bigint' ? value : BigInt(value)\r\n return v.toString()\r\n }\r\n return formatEth(value)\r\n}\r\n\r\nfunction Row({ label, children }: { label: string; children: ReactNode }) {\r\n return (\r\n <div className=\"vq-row\">\r\n <dt>{label}</dt>\r\n <dd>{children}</dd>\r\n </div>\r\n )\r\n}\r\n\r\nfunction download(json: string) {\r\n const url = URL.createObjectURL(new Blob([json], { type: 'application/json' }))\r\n const a = document.createElement('a')\r\n a.href = url\r\n a.download = 'receipt.json'\r\n a.click()\r\n URL.revokeObjectURL(url)\r\n}\r\n\r\n/**\r\n * A full Trust Receipt in the dashboard's card style.\r\n * @example <ReceiptCard receipt={result.receipt} value={result.value} attempts={result.attempts} />\r\n */\r\nexport function ReceiptCard({ receipt, value, attempts = [], error, formatValue = defaultValue, subtitle, badgeExtra, raw, className, ...rest }: ReceiptCardProps) {\r\n const r = receipt ?? null\r\n const json = JSON.stringify(raw ?? r ?? (error ? { code: error.code, name: error.codeName, message: error.message } : null), (_k, v: unknown) => (typeof v === 'bigint' ? v.toString() : v), 2)\r\n return (\r\n <section {...rest} className={cx('vq-card', className)}>\r\n <div className=\"vq-card__head\">\r\n <div className=\"vq-card__badges\">\r\n <ReceiptBadge size=\"lg\" {...(error ? { error } : { status: r?.verification.status ?? 'unsupported' })} />\r\n {badgeExtra}\r\n </div>\r\n {error ? (\r\n <div className=\"vq-card__error\">\r\n <div className=\"vq-mono vq-text-err\">\r\n {error.codeName} · {error.code}\r\n </div>\r\n <p className=\"vq-card__meaning\">{error.meaning}</p>\r\n <p className=\"vq-muted\">{error.message}</p>\r\n <p className=\"vq-hint\">→ {error.hint}</p>\r\n </div>\r\n ) : (\r\n value != null && <div className=\"vq-card__value\">{formatValue(value, r)}</div>\r\n )}\r\n {subtitle && <div className=\"vq-card__subtitle\">{subtitle}</div>}\r\n </div>\r\n\r\n {r && (\r\n <dl className=\"vq-card__section\">\r\n <Row label=\"Block\">\r\n <span className=\"vq-mono\">\r\n #{formatNumber(r.block.number)} {r.block.finalized ? <span className=\"vq-text-ok\">finalized</span> : <span className=\"vq-text-warn\">not finalized</span>}\r\n </span>\r\n <CopyHash value={r.block.hash} />\r\n </Row>\r\n <Row label=\"State root\">\r\n <CopyHash value={r.block.stateRoot} />\r\n </Row>\r\n <Row label=\"Root source\">\r\n <span className={cx('vq-chip', r.verification.rootSource === 'untrusted-rpc' ? 'vq-chip--warn' : 'vq-chip--ok')}>{rootSourceLabel(r.verification.rootSource)}</span>\r\n </Row>\r\n <Row label=\"Verifier\">\r\n <span className=\"vq-mono\">{r.verification.verifierLocation}</span>\r\n </Row>\r\n <Row label=\"Mechanisms\">\r\n <span className=\"vq-chips\">\r\n {r.verification.mechanisms.length === 0 ? <span className=\"vq-muted\">none</span> : r.verification.mechanisms.map((m) => <span key={m} className=\"vq-chip vq-chip--lav\">{m}</span>)}\r\n </span>\r\n </Row>\r\n <Row label=\"Transport\">\r\n <span className=\"vq-mono\">{r.privacy.transport}</span>\r\n </Row>\r\n <Row label=\"Comparison\">\r\n <span className=\"vq-mono\">{r.routing.comparison}</span>\r\n </Row>\r\n {r.warnings.length > 0 && (\r\n <Row label=\"Warnings\">\r\n <ul className=\"vq-list\">\r\n {r.warnings.map((w) => (\r\n <li key={w.code} className=\"vq-text-warn\">\r\n <span className=\"vq-mono\">{w.code}</span> — {w.message}\r\n </li>\r\n ))}\r\n </ul>\r\n </Row>\r\n )}\r\n </dl>\r\n )}\r\n\r\n <div className=\"vq-card__section\">\r\n <h4 className=\"vq-card__h\">Attempts</h4>\r\n {attempts.length === 0 ? (\r\n <p className=\"vq-muted\">{r ? `${r.routing.providersTried} provider(s) tried${r.routing.providerLabel ? `, answered by ${r.routing.providerLabel}` : ''}.` : 'No provider was contacted.'}</p>\r\n ) : (\r\n <ol className=\"vq-attempts\">\r\n {attempts.map((a, i) => (\r\n <li key={i} className={cx('vq-attempt', a.outcome === 'ok' ? 'vq-attempt--ok' : 'vq-attempt--rejected')}>\r\n <span className=\"vq-attempt__dot\" aria-hidden=\"true\" />\r\n <div className=\"vq-attempt__body\">\r\n <div className=\"vq-attempt__line\">\r\n <span className=\"vq-attempt__provider\">{a.provider}</span>\r\n <span className=\"vq-mono vq-attempt__outcome\">{a.outcome}</span>\r\n <span className=\"vq-mono vq-attempt__ms\">{Math.round(a.elapsedMs)} ms</span>\r\n </div>\r\n {a.reason && <p className=\"vq-attempt__reason\">{a.reason}</p>}\r\n </div>\r\n </li>\r\n ))}\r\n </ol>\r\n )}\r\n </div>\r\n\r\n {r && (\r\n <div className=\"vq-card__section\">\r\n <h4 className=\"vq-card__h\">Bindings</h4>\r\n <dl>\r\n <Row label=\"requestBinding\">\r\n <CopyHash value={r.identity.requestBinding} />\r\n </Row>\r\n <Row label=\"resultBinding\">\r\n <CopyHash value={r.identity.resultBinding} />\r\n </Row>\r\n <Row label=\"requestId\">\r\n <CopyHash value={r.identity.requestId} head={8} />\r\n </Row>\r\n </dl>\r\n </div>\r\n )}\r\n\r\n <details className=\"vq-raw\">\r\n <summary>Raw JSON</summary>\r\n <pre>{json}</pre>\r\n </details>\r\n <button type=\"button\" className=\"vq-pill\" onClick={() => download(json)}>\r\n <span>Download receipt.json</span>\r\n <span className=\"vq-pill__circle\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M12 4v12M6 10l6 6 6-6M5 20h14\" />\r\n </svg>\r\n </span>\r\n </button>\r\n </section>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- VerifiedValue\r\n\r\nexport interface VerifiedValueProps extends DivProps {\r\n address: string\r\n /** Read a storage slot instead of the balance. */\r\n slot?: string\r\n /** \"eth\" (default) for balances, \"raw\" for the number, or your own formatter. */\r\n format?: 'eth' | 'raw' | ((value: bigint | string) => ReactNode)\r\n policy?: Policy\r\n refreshInterval?: number\r\n}\r\n\r\n/**\r\n * A proven value in the heading style with its status badge. Click it for the full receipt.\r\n * @example <VerifiedValue address=\"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\" />\r\n */\r\nexport function VerifiedValue({ address, slot, format = 'eth', policy, refreshInterval, className, ...rest }: VerifiedValueProps) {\r\n const opts = { ...(policy ? { policy } : {}), ...(refreshInterval ? { refreshInterval } : {}) }\r\n const balance = useVerifiedBalance(slot ? null : address, opts)\r\n const storage = useVerifiedStorage(slot ? address : null, slot ?? null, opts)\r\n const q = slot ? storage : balance\r\n const [open, setOpen] = useState(false)\r\n const wrapRef = useRef<HTMLSpanElement>(null)\r\n const popId = useId()\r\n\r\n useEffect(() => {\r\n if (!open) return\r\n const onKey = (e: KeyboardEvent) => e.key === 'Escape' && setOpen(false)\r\n const onDown = (e: MouseEvent) => wrapRef.current && !wrapRef.current.contains(e.target as Node) && setOpen(false)\r\n document.addEventListener('keydown', onKey)\r\n document.addEventListener('mousedown', onDown)\r\n return () => {\r\n document.removeEventListener('keydown', onKey)\r\n document.removeEventListener('mousedown', onDown)\r\n }\r\n }, [open])\r\n\r\n if (q.isLoading && !q.data) {\r\n return <span {...rest} className={cx('vq-value', className)} aria-busy=\"true\"><span className=\"vq-skeleton vq-skeleton--value\" /><span className=\"vq-skeleton vq-skeleton--badge\" /></span>\r\n }\r\n if (q.error && !q.data) {\r\n return (\r\n <span {...rest} role=\"alert\" className={cx('vq-value vq-value--error', className)}>\r\n <ReceiptBadge error={q.error} />\r\n <span className=\"vq-value__hint\">\r\n <strong>{q.error.name}</strong> {q.error.hint}\r\n </span>\r\n </span>\r\n )\r\n }\r\n if (!q.data) return null\r\n const v = q.data.value\r\n const shown = typeof format === 'function' ? format(v) : format === 'raw' || slot ? BigInt(v).toString() : formatEth(v)\r\n return (\r\n <span {...rest} ref={wrapRef} className={cx('vq-value vq-fade', className)}>\r\n <button type=\"button\" className=\"vq-value__button\" aria-expanded={open} aria-controls={popId} onClick={() => setOpen((o) => !o)}>\r\n <span className=\"vq-value__num\">{shown}</span>\r\n <ReceiptBadge status={q.data.receipt.verification.status} />\r\n </button>\r\n {open && (\r\n <span id={popId} role=\"dialog\" aria-label=\"Trust receipt\" className=\"vq-popover vq-fade\">\r\n <ReceiptCard receipt={q.data.receipt} value={v} attempts={q.data.attempts} />\r\n </span>\r\n )}\r\n </span>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- EngineStatus\r\n\r\nexport interface EngineStatusProps extends DivProps {\r\n /** Controlled mode: pass health yourself (null = offline). Omit to fetch with useVeriqHealth. */\r\n health?: EngineHealth | null\r\n /** Shown when online and the engine doesn't report `bind`. Default 127.0.0.1:8547. */\r\n address?: string\r\n refreshInterval?: number\r\n}\r\n\r\n/**\r\n * \"● Engine online · 127.0.0.1:8547\" / grey \"● Engine offline\", plus an amber DEV MODE pill for untrusted roots.\r\n * @example <EngineStatus />\r\n */\r\nexport function EngineStatus({ health, address = '127.0.0.1:8547', refreshInterval, className, ...rest }: EngineStatusProps) {\r\n const controlled = health !== undefined\r\n const hasClient = useVeriqClient() !== null\r\n const q = useVeriqHealth({ enabled: !controlled && hasClient, ...(refreshInterval ? { refreshInterval } : {}) })\r\n const h = controlled ? health : (q.data ?? null)\r\n const online = h !== null && h !== undefined && (controlled || !q.error)\r\n const dev = online && (h.devMode || h.rootSource === 'untrusted-rpc')\r\n return (\r\n <span {...rest} className={cx('vq-status-group', className)}>\r\n <span className={cx('vq-status', online ? 'vq-status--online' : 'vq-status--offline')} role=\"status\">\r\n <span className=\"vq-status__dot\" aria-hidden=\"true\" />\r\n <span className=\"vq-status__label\">{online ? `Engine online · ${h.bind ?? address}` : !controlled && q.isLoading ? 'Checking engine…' : 'Engine offline'}</span>\r\n </span>\r\n {dev && <span className=\"vq-status vq-status--dev\">DEV MODE — unverified</span>}\r\n </span>\r\n )\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../src/react/provider.tsx","../../src/react/hooks.ts","../../src/react/components.tsx"],"names":["VeriqContext","createContext","VeriqProvider","client","children","jsx","__name","useVeriqClient","useContext","caches","IDLE","entryFor","key","map","e","toVeriqError","err","VeriqError","run","fetcher","set","snap","l","data","useVeriqQuery","opts","active","entry","subscribe","useCallback","cb","useSyncExternalStore","refresh","useEffect","onFocus","timer","useVerifiedBalance","address","useVerifiedStorage","slot","c","useVeriqHealth","useReceipt","id","cx","STATUS_LABEL","ReceiptBadge","status","error","label","size","className","rest","jsxs","CopyHash","value","head","tail","copied","setCopied","useState","t","shortHash","defaultValue","receipt","formatEth","Row","download","json","url","a","ReceiptCard","attempts","formatValue","subtitle","badgeExtra","raw","r","_k","v","formatNumber","rootSourceLabel","m","w","i","VerifiedValue","format","policy","refreshInterval","balance","storage","q","open","setOpen","wrapRef","useRef","popId","useId","onKey","onDown","shown","o","EngineStatus","health","controlled","hasClient","h","online","dev"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createContext, useContext, type ReactNode } from 'react'\r\nimport type { VeriqClient } from 'veriq-client'\r\n\r\nconst VeriqContext = createContext<VeriqClient | null>(null)\r\n\r\n/**\r\n * Makes a Veriq client available to the hooks and components below it.\r\n * @example\r\n * const veriq = createVeriq()\r\n * <VeriqProvider client={veriq}><App /></VeriqProvider>\r\n */\r\nexport function VeriqProvider({ client, children }: { client: VeriqClient; children?: ReactNode }) {\r\n return <VeriqContext.Provider value={client}>{children}</VeriqContext.Provider>\r\n}\r\n\r\n/**\r\n * The client from the nearest VeriqProvider (null if there is none).\r\n * @example const veriq = useVeriqClient()\r\n */\r\nexport function useVeriqClient(): VeriqClient | null {\r\n return useContext(VeriqContext)\r\n}\r\n","import { useCallback, useEffect, useSyncExternalStore } from 'react'\r\nimport { VeriqError, type EngineHealth, type Hex, type Policy, type TrustReceipt, type VeriqClient, type VerifiedResult } from 'veriq-client'\r\nimport { useVeriqClient } from './provider'\r\n\r\nexport interface QueryState<T> {\r\n data?: T\r\n error?: VeriqError\r\n isLoading: boolean\r\n /** Re-fetch now (deduplicated with any request already in flight). */\r\n refresh: () => Promise<void>\r\n}\r\n\r\nexport interface HookOptions {\r\n /** Poll every N ms. Default: no polling. */\r\n refreshInterval?: number\r\n /** Set false to skip fetching. Default true. */\r\n enabled?: boolean\r\n}\r\n\r\ninterface Snapshot {\r\n data?: unknown\r\n error?: VeriqError\r\n isLoading: boolean\r\n}\r\n\r\ninterface Entry {\r\n snap: Snapshot\r\n inflight?: Promise<void>\r\n listeners: Set<() => void>\r\n}\r\n\r\n// Tiny cache: one Map per client, keyed by method + params. No external data library.\r\nconst caches = new WeakMap<VeriqClient, Map<string, Entry>>()\r\nconst IDLE: Snapshot = { isLoading: false }\r\n\r\nfunction entryFor(client: VeriqClient, key: string): Entry {\r\n let map = caches.get(client)\r\n if (!map) caches.set(client, (map = new Map()))\r\n let e = map.get(key)\r\n if (!e) map.set(key, (e = { snap: { isLoading: true }, listeners: new Set() }))\r\n return e\r\n}\r\n\r\nfunction toVeriqError(err: unknown): VeriqError {\r\n return err instanceof VeriqError ? err : new VeriqError(0, err instanceof Error ? err.message : String(err), { cause: err })\r\n}\r\n\r\nfunction run(e: Entry, fetcher: () => Promise<unknown>): Promise<void> {\r\n if (e.inflight) return e.inflight\r\n const set = (snap: Snapshot) => {\r\n e.snap = snap\r\n e.listeners.forEach((l) => l())\r\n }\r\n if (e.snap.data === undefined && !e.snap.isLoading) set({ ...e.snap, isLoading: true })\r\n e.inflight = fetcher()\r\n .then((data) => set({ data, isLoading: false }))\r\n .catch((err: unknown) => set({ ...(e.snap.data !== undefined ? { data: e.snap.data } : {}), error: toVeriqError(err), isLoading: false }))\r\n .finally(() => {\r\n e.inflight = undefined\r\n })\r\n return e.inflight\r\n}\r\n\r\nfunction useVeriqQuery<T>(key: string | null, fetcher: (c: VeriqClient) => Promise<T>, opts: HookOptions = {}): QueryState<T> {\r\n const client = useVeriqClient()\r\n const active = client !== null && key !== null && opts.enabled !== false\r\n const entry = active ? entryFor(client, key) : null\r\n\r\n const subscribe = useCallback((cb: () => void) => {\r\n if (!entry) return () => {}\r\n entry.listeners.add(cb)\r\n return () => entry.listeners.delete(cb)\r\n }, [entry])\r\n const snap = useSyncExternalStore(subscribe, () => entry?.snap ?? IDLE, () => entry?.snap ?? IDLE)\r\n\r\n const refresh = useCallback(() => (entry && client ? run(entry, () => fetcher(client)) : Promise.resolve()), [entry, client, fetcher])\r\n\r\n useEffect(() => {\r\n if (!entry) return\r\n if (entry.snap.data === undefined && !entry.snap.error) void refresh()\r\n // Revalidate when the tab regains focus.\r\n const onFocus = () => {\r\n if (typeof document === 'undefined' || document.visibilityState !== 'hidden') void refresh()\r\n }\r\n window.addEventListener('focus', onFocus)\r\n document.addEventListener('visibilitychange', onFocus)\r\n const timer = opts.refreshInterval ? setInterval(() => void refresh(), opts.refreshInterval) : undefined\r\n return () => {\r\n window.removeEventListener('focus', onFocus)\r\n document.removeEventListener('visibilitychange', onFocus)\r\n if (timer) clearInterval(timer)\r\n }\r\n }, [entry, refresh, opts.refreshInterval])\r\n\r\n return {\r\n ...(snap.data !== undefined ? { data: snap.data as T } : {}),\r\n ...(snap.error ? { error: snap.error } : {}),\r\n isLoading: active ? snap.isLoading : false,\r\n refresh,\r\n }\r\n}\r\n\r\nexport interface ReadHookOptions extends HookOptions {\r\n policy?: Policy\r\n}\r\n\r\n/**\r\n * Proven balance for an address, cached and shared across components.\r\n * @example const { data, error, isLoading } = useVerifiedBalance('0x…')\r\n */\r\nexport function useVerifiedBalance(address: string | null | undefined, opts: ReadHookOptions = {}): QueryState<VerifiedResult<bigint>> {\r\n const key = address ? `readBalance:${address.toLowerCase()}:${JSON.stringify(opts.policy ?? null)}` : null\r\n const fetcher = useCallback((c: VeriqClient) => c.readBalance({ address: address ?? '', ...(opts.policy ? { policy: opts.policy } : {}) }), [address, opts.policy])\r\n return useVeriqQuery(key, fetcher, opts)\r\n}\r\n\r\n/**\r\n * Proven storage slot value.\r\n * @example const { data } = useVerifiedStorage(contract, '0x0')\r\n */\r\nexport function useVerifiedStorage(address: string | null | undefined, slot: string | null | undefined, opts: ReadHookOptions = {}): QueryState<VerifiedResult<Hex>> {\r\n const key = address && slot ? `readStorage:${address.toLowerCase()}:${slot}:${JSON.stringify(opts.policy ?? null)}` : null\r\n const fetcher = useCallback(\r\n (c: VeriqClient) => c.readStorage({ address: address ?? '', slot: slot ?? '', ...(opts.policy ? { policy: opts.policy } : {}) }),\r\n [address, slot, opts.policy],\r\n )\r\n return useVeriqQuery(key, fetcher, opts)\r\n}\r\n\r\n/**\r\n * Engine health, polled every 5 s by default.\r\n * @example const { data, error } = useVeriqHealth()\r\n */\r\nexport function useVeriqHealth(opts: HookOptions = {}): QueryState<EngineHealth> {\r\n const fetcher = useCallback((c: VeriqClient) => c.health(), [])\r\n return useVeriqQuery('health', fetcher, { refreshInterval: 5000, ...opts })\r\n}\r\n\r\n/**\r\n * A stored Trust Receipt by request id.\r\n * @example const { data: receipt } = useReceipt(id)\r\n */\r\nexport function useReceipt(id: string | null | undefined, opts: HookOptions = {}): QueryState<TrustReceipt> {\r\n const fetcher = useCallback((c: VeriqClient) => c.getReceipt(id ?? ''), [id])\r\n return useVeriqQuery(id ? `receipt:${id}` : null, fetcher, opts)\r\n}\r\n","import { useEffect, useId, useRef, useState, type HTMLAttributes, type ReactNode } from 'react'\r\nimport {\r\n formatEth,\r\n formatNumber,\r\n rootSourceLabel,\r\n shortHash,\r\n type Attempt,\r\n type EngineHealth,\r\n type Policy,\r\n type TrustReceipt,\r\n type VerificationStatus,\r\n type VeriqError,\r\n} from 'veriq-client'\r\nimport { useVeriqClient } from './provider'\r\nimport { useVerifiedBalance, useVerifiedStorage, useVeriqHealth } from './hooks'\r\n\r\nconst cx = (...c: (string | false | null | undefined)[]) => c.filter(Boolean).join(' ')\r\n\r\ntype DivProps = Omit<HTMLAttributes<HTMLElement>, 'children'>\r\n\r\n// ---------------------------------------------------------------- ReceiptBadge\r\n\r\nexport type BadgeSize = 'sm' | 'md' | 'lg'\r\n\r\nexport interface ReceiptBadgeProps extends DivProps {\r\n status?: VerificationStatus\r\n /** Shows the error's code name in the error colour. Takes precedence over `status`. */\r\n error?: VeriqError | null\r\n /** Override the label text. */\r\n label?: ReactNode\r\n size?: BadgeSize\r\n}\r\n\r\nconst STATUS_LABEL: Record<VerificationStatus, string> = { verified: 'Verified', unverified: 'Unverified', unsupported: 'Unsupported' }\r\n\r\n/**\r\n * Status pill with a small dot: verified (green), unverified (amber), unsupported (lavender), error (rose).\r\n * @example <ReceiptBadge status={receipt.verification.status} />\r\n * @example <ReceiptBadge error={err} />\r\n */\r\nexport function ReceiptBadge({ status = 'unsupported', error, label, size = 'sm', className, ...rest }: ReceiptBadgeProps) {\r\n const kind = error ? 'error' : status\r\n return (\r\n <span {...rest} className={cx('vq-badge', `vq-badge--${kind}`, `vq-badge--${size}`, className)}>\r\n <span className=\"vq-badge__dot\" aria-hidden=\"true\" />\r\n {label ?? (error ? error.codeName : STATUS_LABEL[status])}\r\n </span>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- Hash (copy on click)\r\n\r\n/**\r\n * Monospace, middle-truncated hash that copies on click and shows a \"Copied\" tick.\r\n * @example <CopyHash value={receipt.block.stateRoot} />\r\n */\r\nexport function CopyHash({ value, head = 6, tail = 6, className }: { value: string; head?: number; tail?: number; className?: string }) {\r\n const [copied, setCopied] = useState(false)\r\n useEffect(() => {\r\n if (!copied) return\r\n const t = setTimeout(() => setCopied(false), 1200)\r\n return () => clearTimeout(t)\r\n }, [copied])\r\n return (\r\n <button\r\n type=\"button\"\r\n className={cx('vq-hash', copied && 'vq-hash--copied', className)}\r\n title={value}\r\n aria-label={`Copy ${value}`}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n void navigator.clipboard?.writeText(value).then(() => setCopied(true))\r\n }}\r\n >\r\n <span>{shortHash(value, head, tail)}</span>\r\n <span className=\"vq-hash__tick\" aria-live=\"polite\">{copied ? '✓ Copied' : ''}</span>\r\n </button>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- ReceiptCard\r\n\r\nexport interface ReceiptCardProps extends DivProps {\r\n receipt?: TrustReceipt | null\r\n /** Proven value: wei for balances, hex or bigint for storage. */\r\n value?: bigint | string | null\r\n attempts?: Attempt[]\r\n /** Show a failed read instead of a receipt. */\r\n error?: VeriqError | null\r\n /** Custom value formatter. Default: ETH for balances, raw for storage. */\r\n formatValue?: (value: bigint | string, receipt: TrustReceipt | null) => ReactNode\r\n /** Extra line under the value (method, address, time…). */\r\n subtitle?: ReactNode\r\n /** Extra elements next to the status badge. */\r\n badgeExtra?: ReactNode\r\n /** What \"Raw JSON\" and the download contain. Default: the receipt. */\r\n raw?: unknown\r\n}\r\n\r\nfunction defaultValue(value: bigint | string, receipt: TrustReceipt | null): ReactNode {\r\n if (receipt && /storage/i.test(receipt.identity.method)) {\r\n const v = typeof value === 'bigint' ? value : BigInt(value)\r\n return v.toString()\r\n }\r\n return formatEth(value)\r\n}\r\n\r\nfunction Row({ label, children }: { label: string; children: ReactNode }) {\r\n return (\r\n <div className=\"vq-row\">\r\n <dt>{label}</dt>\r\n <dd>{children}</dd>\r\n </div>\r\n )\r\n}\r\n\r\nfunction download(json: string) {\r\n const url = URL.createObjectURL(new Blob([json], { type: 'application/json' }))\r\n const a = document.createElement('a')\r\n a.href = url\r\n a.download = 'receipt.json'\r\n a.click()\r\n URL.revokeObjectURL(url)\r\n}\r\n\r\n/**\r\n * A full Trust Receipt in the dashboard's card style.\r\n * @example <ReceiptCard receipt={result.receipt} value={result.value} attempts={result.attempts} />\r\n */\r\nexport function ReceiptCard({ receipt, value, attempts = [], error, formatValue = defaultValue, subtitle, badgeExtra, raw, className, ...rest }: ReceiptCardProps) {\r\n const r = receipt ?? null\r\n const json = JSON.stringify(raw ?? r ?? (error ? { code: error.code, name: error.codeName, message: error.message } : null), (_k, v: unknown) => (typeof v === 'bigint' ? v.toString() : v), 2)\r\n return (\r\n <section {...rest} className={cx('vq-card', className)}>\r\n <div className=\"vq-card__head\">\r\n <div className=\"vq-card__badges\">\r\n <ReceiptBadge size=\"lg\" {...(error ? { error } : { status: r?.verification.status ?? 'unsupported' })} />\r\n {badgeExtra}\r\n </div>\r\n {error ? (\r\n <div className=\"vq-card__error\">\r\n <div className=\"vq-mono vq-text-err\">\r\n {error.codeName} · {error.code}\r\n </div>\r\n <p className=\"vq-card__meaning\">{error.meaning}</p>\r\n <p className=\"vq-muted\">{error.message}</p>\r\n <p className=\"vq-hint\">→ {error.hint}</p>\r\n </div>\r\n ) : (\r\n value != null && <div className=\"vq-card__value\">{formatValue(value, r)}</div>\r\n )}\r\n {subtitle && <div className=\"vq-card__subtitle\">{subtitle}</div>}\r\n </div>\r\n\r\n {r && (\r\n <dl className=\"vq-card__section\">\r\n <Row label=\"Block\">\r\n <span className=\"vq-mono\">\r\n #{formatNumber(r.block.number)} {r.block.finalized ? <span className=\"vq-text-ok\">finalized</span> : <span className=\"vq-text-warn\">not finalized</span>}\r\n </span>\r\n <CopyHash value={r.block.hash} />\r\n </Row>\r\n <Row label=\"State root\">\r\n <CopyHash value={r.block.stateRoot} />\r\n </Row>\r\n <Row label=\"Root source\">\r\n <span className={cx('vq-chip', r.verification.rootSource === 'untrusted-rpc' ? 'vq-chip--warn' : 'vq-chip--ok')}>{rootSourceLabel(r.verification.rootSource)}</span>\r\n </Row>\r\n <Row label=\"Verifier\">\r\n <span className=\"vq-mono\">{r.verification.verifierLocation}</span>\r\n </Row>\r\n <Row label=\"Mechanisms\">\r\n <span className=\"vq-chips\">\r\n {r.verification.mechanisms.length === 0 ? <span className=\"vq-muted\">none</span> : r.verification.mechanisms.map((m) => <span key={m} className=\"vq-chip vq-chip--lav\">{m}</span>)}\r\n </span>\r\n </Row>\r\n <Row label=\"Transport\">\r\n <span className=\"vq-mono\">{r.privacy.mechanism ? `${r.privacy.transport} (${r.privacy.mechanism})` : r.privacy.transport}</span>\r\n </Row>\r\n <Row label=\"Comparison\">\r\n <span className=\"vq-mono\">{r.routing.comparison}</span>\r\n </Row>\r\n {r.warnings.length > 0 && (\r\n <Row label=\"Warnings\">\r\n <ul className=\"vq-list\">\r\n {r.warnings.map((w) => (\r\n <li key={w.code} className=\"vq-text-warn\">\r\n <span className=\"vq-mono\">{w.code}</span> — {w.message}\r\n </li>\r\n ))}\r\n </ul>\r\n </Row>\r\n )}\r\n </dl>\r\n )}\r\n\r\n <div className=\"vq-card__section\">\r\n <h4 className=\"vq-card__h\">Attempts</h4>\r\n {attempts.length === 0 ? (\r\n <p className=\"vq-muted\">{r ? `${r.routing.providersTried} provider(s) tried${r.routing.providerLabel ? `, answered by ${r.routing.providerLabel}` : ''}.` : 'No provider was contacted.'}</p>\r\n ) : (\r\n <ol className=\"vq-attempts\">\r\n {attempts.map((a, i) => (\r\n <li key={i} className={cx('vq-attempt', a.outcome === 'ok' ? 'vq-attempt--ok' : 'vq-attempt--rejected')}>\r\n <span className=\"vq-attempt__dot\" aria-hidden=\"true\" />\r\n <div className=\"vq-attempt__body\">\r\n <div className=\"vq-attempt__line\">\r\n <span className=\"vq-attempt__provider\">{a.provider}</span>\r\n <span className=\"vq-mono vq-attempt__outcome\">{a.outcome}</span>\r\n <span className=\"vq-mono vq-attempt__ms\">{Math.round(a.elapsedMs)} ms</span>\r\n </div>\r\n {a.reason && <p className=\"vq-attempt__reason\">{a.reason}</p>}\r\n </div>\r\n </li>\r\n ))}\r\n </ol>\r\n )}\r\n </div>\r\n\r\n {r && (\r\n <div className=\"vq-card__section\">\r\n <h4 className=\"vq-card__h\">Bindings</h4>\r\n <dl>\r\n <Row label=\"requestBinding\">\r\n <CopyHash value={r.identity.requestBinding} />\r\n </Row>\r\n <Row label=\"resultBinding\">\r\n <CopyHash value={r.identity.resultBinding} />\r\n </Row>\r\n <Row label=\"requestId\">\r\n <CopyHash value={r.identity.requestId} head={8} />\r\n </Row>\r\n </dl>\r\n </div>\r\n )}\r\n\r\n <details className=\"vq-raw\">\r\n <summary>Raw JSON</summary>\r\n <pre>{json}</pre>\r\n </details>\r\n <button type=\"button\" className=\"vq-pill\" onClick={() => download(json)}>\r\n <span>Download receipt.json</span>\r\n <span className=\"vq-pill__circle\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M12 4v12M6 10l6 6 6-6M5 20h14\" />\r\n </svg>\r\n </span>\r\n </button>\r\n </section>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- VerifiedValue\r\n\r\nexport interface VerifiedValueProps extends DivProps {\r\n address: string\r\n /** Read a storage slot instead of the balance. */\r\n slot?: string\r\n /** \"eth\" (default) for balances, \"raw\" for the number, or your own formatter. */\r\n format?: 'eth' | 'raw' | ((value: bigint | string) => ReactNode)\r\n policy?: Policy\r\n refreshInterval?: number\r\n}\r\n\r\n/**\r\n * A proven value in the heading style with its status badge. Click it for the full receipt.\r\n * @example <VerifiedValue address=\"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\" />\r\n */\r\nexport function VerifiedValue({ address, slot, format = 'eth', policy, refreshInterval, className, ...rest }: VerifiedValueProps) {\r\n const opts = { ...(policy ? { policy } : {}), ...(refreshInterval ? { refreshInterval } : {}) }\r\n const balance = useVerifiedBalance(slot ? null : address, opts)\r\n const storage = useVerifiedStorage(slot ? address : null, slot ?? null, opts)\r\n const q = slot ? storage : balance\r\n const [open, setOpen] = useState(false)\r\n const wrapRef = useRef<HTMLSpanElement>(null)\r\n const popId = useId()\r\n\r\n useEffect(() => {\r\n if (!open) return\r\n const onKey = (e: KeyboardEvent) => e.key === 'Escape' && setOpen(false)\r\n const onDown = (e: MouseEvent) => wrapRef.current && !wrapRef.current.contains(e.target as Node) && setOpen(false)\r\n document.addEventListener('keydown', onKey)\r\n document.addEventListener('mousedown', onDown)\r\n return () => {\r\n document.removeEventListener('keydown', onKey)\r\n document.removeEventListener('mousedown', onDown)\r\n }\r\n }, [open])\r\n\r\n if (q.isLoading && !q.data) {\r\n return <span {...rest} className={cx('vq-value', className)} aria-busy=\"true\"><span className=\"vq-skeleton vq-skeleton--value\" /><span className=\"vq-skeleton vq-skeleton--badge\" /></span>\r\n }\r\n if (q.error && !q.data) {\r\n return (\r\n <span {...rest} role=\"alert\" className={cx('vq-value vq-value--error', className)}>\r\n <ReceiptBadge error={q.error} />\r\n <span className=\"vq-value__hint\">\r\n <strong>{q.error.name}</strong> {q.error.hint}\r\n </span>\r\n </span>\r\n )\r\n }\r\n if (!q.data) return null\r\n const v = q.data.value\r\n const shown = typeof format === 'function' ? format(v) : format === 'raw' || slot ? BigInt(v).toString() : formatEth(v)\r\n return (\r\n <span {...rest} ref={wrapRef} className={cx('vq-value vq-fade', className)}>\r\n <button type=\"button\" className=\"vq-value__button\" aria-expanded={open} aria-controls={popId} onClick={() => setOpen((o) => !o)}>\r\n <span className=\"vq-value__num\">{shown}</span>\r\n <ReceiptBadge status={q.data.receipt.verification.status} />\r\n </button>\r\n {open && (\r\n <span id={popId} role=\"dialog\" aria-label=\"Trust receipt\" className=\"vq-popover vq-fade\">\r\n <ReceiptCard receipt={q.data.receipt} value={v} attempts={q.data.attempts} />\r\n </span>\r\n )}\r\n </span>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------- EngineStatus\r\n\r\nexport interface EngineStatusProps extends DivProps {\r\n /** Controlled mode: pass health yourself (null = offline). Omit to fetch with useVeriqHealth. */\r\n health?: EngineHealth | null\r\n /** Shown when online and the engine doesn't report `bind`. Default 127.0.0.1:8547. */\r\n address?: string\r\n refreshInterval?: number\r\n}\r\n\r\n/**\r\n * \"● Engine online · 127.0.0.1:8547\" / grey \"● Engine offline\", plus an amber DEV MODE pill for untrusted roots.\r\n * @example <EngineStatus />\r\n */\r\nexport function EngineStatus({ health, address, refreshInterval, className, ...rest }: EngineStatusProps) {\r\n const controlled = health !== undefined\r\n const hasClient = useVeriqClient() !== null\r\n const q = useVeriqHealth({ enabled: !controlled && hasClient, ...(refreshInterval ? { refreshInterval } : {}) })\r\n const h = controlled ? health : (q.data ?? null)\r\n const online = h !== null && h !== undefined && (controlled || !q.error)\r\n const dev = online && (h.devMode || h.rootSource === 'untrusted-rpc')\r\n return (\r\n <span {...rest} className={cx('vq-status-group', className)}>\r\n <span className={cx('vq-status', online ? 'vq-status--online' : 'vq-status--offline')} role=\"status\">\r\n <span className=\"vq-status__dot\" aria-hidden=\"true\" />\r\n <span className=\"vq-status__label\">{online ? `Engine online · ${address ?? h.bind ?? '127.0.0.1:8547'}` : !controlled && q.isLoading ? 'Checking engine…' : 'Engine offline'}</span>\r\n </span>\r\n {dev && <span className=\"vq-status vq-status--dev\">DEV MODE — unverified</span>}\r\n </span>\r\n )\r\n}\r\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'../chunk-AYDF3IFZ.js';import {createContext,useContext,useCallback,useSyncExternalStore,useEffect,useState,useRef,useId}from'react';import {jsx,jsxs}from'react/jsx-runtime';import {VeriqError,shortHash,formatEth,formatNumber,rootSourceLabel}from'veriq-client';var P=createContext(null);function j({client:e,children:n}){return jsx(P.Provider,{value:e,children:n})}a(j,"VeriqProvider");function b(){return useContext(P)}a(b,"useVeriqClient");var B=new WeakMap,T={isLoading:false};function W(e,n){let a=B.get(e);a||B.set(e,a=new Map);let i=a.get(n);return i||a.set(n,i={snap:{isLoading:true},listeners:new Set}),i}a(W,"entryFor");function F(e){return e instanceof VeriqError?e:new VeriqError(0,e instanceof Error?e.message:String(e),{cause:e})}a(F,"toVeriqError");function K(e,n){if(e.inflight)return e.inflight;let a$1=a(i=>{e.snap=i,e.listeners.forEach(c=>c());},"set");return e.snap.data===void 0&&!e.snap.isLoading&&a$1({...e.snap,isLoading:true}),e.inflight=n().then(i=>a$1({data:i,isLoading:false})).catch(i=>a$1({...e.snap.data!==void 0?{data:e.snap.data}:{},error:F(i),isLoading:false})).finally(()=>{e.inflight=void 0;}),e.inflight}a(K,"run");function _(e,n,a$1={}){let i=b(),c=i!==null&&e!==null&&a$1.enabled!==false,r=c?W(i,e):null,v=useCallback(u=>r?(r.listeners.add(u),()=>r.listeners.delete(u)):()=>{},[r]),m=useSyncExternalStore(v,()=>r?.snap??T,()=>r?.snap??T),p=useCallback(()=>r&&i?K(r,()=>n(i)):Promise.resolve(),[r,i,n]);return useEffect(()=>{if(!r)return;r.snap.data===void 0&&!r.snap.error&&p();let u=a(()=>{(typeof document>"u"||document.visibilityState!=="hidden")&&p();},"onFocus");window.addEventListener("focus",u),document.addEventListener("visibilitychange",u);let s=a$1.refreshInterval?setInterval(()=>{p();},a$1.refreshInterval):void 0;return ()=>{window.removeEventListener("focus",u),document.removeEventListener("visibilitychange",u),s&&clearInterval(s);}},[r,p,a$1.refreshInterval]),{...m.data!==void 0?{data:m.data}:{},...m.error?{error:m.error}:{},isLoading:c?m.isLoading:false,refresh:p}}a(_,"useVeriqQuery");function S(e,n={}){let a=e?`readBalance:${e.toLowerCase()}:${JSON.stringify(n.policy??null)}`:null,i=useCallback(c=>c.readBalance({address:e??"",...n.policy?{policy:n.policy}:{}}),[e,n.policy]);return _(a,i,n)}a(S,"useVerifiedBalance");function E(e,n,a={}){let i=e&&n?`readStorage:${e.toLowerCase()}:${n}:${JSON.stringify(a.policy??null)}`:null,c=useCallback(r=>r.readStorage({address:e??"",slot:n??"",...a.policy?{policy:a.policy}:{}}),[e,n,a.policy]);return _(i,c,a)}a(E,"useVerifiedStorage");function x(e={}){let n=useCallback(a=>a.health(),[]);return _("health",n,{refreshInterval:5e3,...e})}a(x,"useVeriqHealth");function G(e,n={}){let a=useCallback(i=>i.getReceipt(e??""),[e]);return _(e?`receipt:${e}`:null,a,n)}a(G,"useReceipt");var g=a((...e)=>e.filter(Boolean).join(" "),"cx"),ne={verified:"Verified",unverified:"Unverified",unsupported:"Unsupported"};function w({status:e="unsupported",error:n,label:a,size:i="sm",className:c,...r}){return jsxs("span",{...r,className:g("vq-badge",`vq-badge--${n?"error":e}`,`vq-badge--${i}`,c),children:[jsx("span",{className:"vq-badge__dot","aria-hidden":"true"}),a??(n?n.codeName:ne[e])]})}a(w,"ReceiptBadge");function N({value:e,head:n=6,tail:a=6,className:i}){let[c,r]=useState(false);return useEffect(()=>{if(!c)return;let v=setTimeout(()=>r(false),1200);return ()=>clearTimeout(v)},[c]),jsxs("button",{type:"button",className:g("vq-hash",c&&"vq-hash--copied",i),title:e,"aria-label":`Copy ${e}`,onClick:v=>{v.stopPropagation(),navigator.clipboard?.writeText(e).then(()=>r(true));},children:[jsx("span",{children:shortHash(e,n,a)}),jsx("span",{className:"vq-hash__tick","aria-live":"polite",children:c?"\u2713 Copied":""})]})}a(N,"CopyHash");function ae(e,n){return n&&/storage/i.test(n.identity.method)?(typeof e=="bigint"?e:BigInt(e)).toString():formatEth(e)}a(ae,"defaultValue");function f({label:e,children:n}){return jsxs("div",{className:"vq-row",children:[jsx("dt",{children:e}),jsx("dd",{children:n})]})}a(f,"Row");function ie(e){let n=URL.createObjectURL(new Blob([e],{type:"application/json"})),a=document.createElement("a");a.href=n,a.download="receipt.json",a.click(),URL.revokeObjectURL(n);}a(ie,"download");function $({receipt:e,value:n,attempts:a=[],error:i,formatValue:c=ae,subtitle:r,badgeExtra:v,raw:m,className:p,...u}){let s=e??null,h=JSON.stringify(m??s??(i?{code:i.code,name:i.codeName,message:i.message}:null),(d,q)=>typeof q=="bigint"?q.toString():q,2);return jsxs("section",{...u,className:g("vq-card",p),children:[jsxs("div",{className:"vq-card__head",children:[jsxs("div",{className:"vq-card__badges",children:[jsx(w,{size:"lg",...i?{error:i}:{status:s?.verification.status??"unsupported"}}),v]}),i?jsxs("div",{className:"vq-card__error",children:[jsxs("div",{className:"vq-mono vq-text-err",children:[i.codeName," \xB7 ",i.code]}),jsx("p",{className:"vq-card__meaning",children:i.meaning}),jsx("p",{className:"vq-muted",children:i.message}),jsxs("p",{className:"vq-hint",children:["\u2192 ",i.hint]})]}):n!=null&&jsx("div",{className:"vq-card__value",children:c(n,s)}),r&&jsx("div",{className:"vq-card__subtitle",children:r})]}),s&&jsxs("dl",{className:"vq-card__section",children:[jsxs(f,{label:"Block",children:[jsxs("span",{className:"vq-mono",children:["#",formatNumber(s.block.number)," ",s.block.finalized?jsx("span",{className:"vq-text-ok",children:"finalized"}):jsx("span",{className:"vq-text-warn",children:"not finalized"})]}),jsx(N,{value:s.block.hash})]}),jsx(f,{label:"State root",children:jsx(N,{value:s.block.stateRoot})}),jsx(f,{label:"Root source",children:jsx("span",{className:g("vq-chip",s.verification.rootSource==="untrusted-rpc"?"vq-chip--warn":"vq-chip--ok"),children:rootSourceLabel(s.verification.rootSource)})}),jsx(f,{label:"Verifier",children:jsx("span",{className:"vq-mono",children:s.verification.verifierLocation})}),jsx(f,{label:"Mechanisms",children:jsx("span",{className:"vq-chips",children:s.verification.mechanisms.length===0?jsx("span",{className:"vq-muted",children:"none"}):s.verification.mechanisms.map(d=>jsx("span",{className:"vq-chip vq-chip--lav",children:d},d))})}),jsx(f,{label:"Transport",children:jsx("span",{className:"vq-mono",children:s.privacy.transport})}),jsx(f,{label:"Comparison",children:jsx("span",{className:"vq-mono",children:s.routing.comparison})}),s.warnings.length>0&&jsx(f,{label:"Warnings",children:jsx("ul",{className:"vq-list",children:s.warnings.map(d=>jsxs("li",{className:"vq-text-warn",children:[jsx("span",{className:"vq-mono",children:d.code})," \u2014 ",d.message]},d.code))})})]}),jsxs("div",{className:"vq-card__section",children:[jsx("h4",{className:"vq-card__h",children:"Attempts"}),a.length===0?jsx("p",{className:"vq-muted",children:s?`${s.routing.providersTried} provider(s) tried${s.routing.providerLabel?`, answered by ${s.routing.providerLabel}`:""}.`:"No provider was contacted."}):jsx("ol",{className:"vq-attempts",children:a.map((d,q)=>jsxs("li",{className:g("vq-attempt",d.outcome==="ok"?"vq-attempt--ok":"vq-attempt--rejected"),children:[jsx("span",{className:"vq-attempt__dot","aria-hidden":"true"}),jsxs("div",{className:"vq-attempt__body",children:[jsxs("div",{className:"vq-attempt__line",children:[jsx("span",{className:"vq-attempt__provider",children:d.provider}),jsx("span",{className:"vq-mono vq-attempt__outcome",children:d.outcome}),jsxs("span",{className:"vq-mono vq-attempt__ms",children:[Math.round(d.elapsedMs)," ms"]})]}),d.reason&&jsx("p",{className:"vq-attempt__reason",children:d.reason})]})]},q))})]}),s&&jsxs("div",{className:"vq-card__section",children:[jsx("h4",{className:"vq-card__h",children:"Bindings"}),jsxs("dl",{children:[jsx(f,{label:"requestBinding",children:jsx(N,{value:s.identity.requestBinding})}),jsx(f,{label:"resultBinding",children:jsx(N,{value:s.identity.resultBinding})}),jsx(f,{label:"requestId",children:jsx(N,{value:s.identity.requestId,head:8})})]})]}),jsxs("details",{className:"vq-raw",children:[jsx("summary",{children:"Raw JSON"}),jsx("pre",{children:h})]}),jsxs("button",{type:"button",className:"vq-pill",onClick:()=>ie(h),children:[jsx("span",{children:"Download receipt.json"}),jsx("span",{className:"vq-pill__circle","aria-hidden":"true",children:jsx("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M12 4v12M6 10l6 6 6-6M5 20h14"})})})]})]})}a($,"ReceiptCard");function se({address:e,slot:n,format:a$1="eth",policy:i,refreshInterval:c,className:r,...v}){let m={...i?{policy:i}:{},...c?{refreshInterval:c}:{}},p=S(n?null:e,m),u=E(n?e:null,n??null,m),s=n?u:p,[h,d]=useState(false),q=useRef(null),C=useId();if(useEffect(()=>{if(!h)return;let R=a(k=>k.key==="Escape"&&d(false),"onKey"),L=a(k=>q.current&&!q.current.contains(k.target)&&d(false),"onDown");return document.addEventListener("keydown",R),document.addEventListener("mousedown",L),()=>{document.removeEventListener("keydown",R),document.removeEventListener("mousedown",L);}},[h]),s.isLoading&&!s.data)return jsxs("span",{...v,className:g("vq-value",r),"aria-busy":"true",children:[jsx("span",{className:"vq-skeleton vq-skeleton--value"}),jsx("span",{className:"vq-skeleton vq-skeleton--badge"})]});if(s.error&&!s.data)return jsxs("span",{...v,role:"alert",className:g("vq-value vq-value--error",r),children:[jsx(w,{error:s.error}),jsxs("span",{className:"vq-value__hint",children:[jsx("strong",{children:s.error.name})," ",s.error.hint]})]});if(!s.data)return null;let V=s.data.value,D=typeof a$1=="function"?a$1(V):a$1==="raw"||n?BigInt(V).toString():formatEth(V);return jsxs("span",{...v,ref:q,className:g("vq-value vq-fade",r),children:[jsxs("button",{type:"button",className:"vq-value__button","aria-expanded":h,"aria-controls":C,onClick:()=>d(R=>!R),children:[jsx("span",{className:"vq-value__num",children:D}),jsx(w,{status:s.data.receipt.verification.status})]}),h&&jsx("span",{id:C,role:"dialog","aria-label":"Trust receipt",className:"vq-popover vq-fade",children:jsx($,{receipt:s.data.receipt,value:V,attempts:s.data.attempts})})]})}a(se,"VerifiedValue");function re({health:e,address:n="127.0.0.1:8547",refreshInterval:a,className:i,...c}){let r=e!==void 0,v=b()!==null,m=x({enabled:!r&&v,...a?{refreshInterval:a}:{}}),p=r?e:m.data??null,u=p!=null&&(r||!m.error),s=u&&(p.devMode||p.rootSource==="untrusted-rpc");return jsxs("span",{...c,className:g("vq-status-group",i),children:[jsxs("span",{className:g("vq-status",u?"vq-status--online":"vq-status--offline"),role:"status",children:[jsx("span",{className:"vq-status__dot","aria-hidden":"true"}),jsx("span",{className:"vq-status__label",children:u?`Engine online \xB7 ${p.bind??n}`:!r&&m.isLoading?"Checking engine\u2026":"Engine offline"})]}),s&&jsx("span",{className:"vq-status vq-status--dev",children:"DEV MODE \u2014 unverified"})]})}a(re,"EngineStatus");export{N as CopyHash,re as EngineStatus,w as ReceiptBadge,$ as ReceiptCard,se as VerifiedValue,j as VeriqProvider,G as useReceipt,S as useVerifiedBalance,E as useVerifiedStorage,b as useVeriqClient,x as useVeriqHealth};//# sourceMappingURL=index.js.map
1
+ import {a}from'../chunk-AYDF3IFZ.js';import {createContext,useContext,useCallback,useSyncExternalStore,useEffect,useState,useRef,useId}from'react';import {jsx,jsxs}from'react/jsx-runtime';import {VeriqError,shortHash,formatEth,formatNumber,rootSourceLabel}from'veriq-client';var P=createContext(null);function j({client:e,children:n}){return jsx(P.Provider,{value:e,children:n})}a(j,"VeriqProvider");function b(){return useContext(P)}a(b,"useVeriqClient");var B=new WeakMap,T={isLoading:false};function W(e,n){let i=B.get(e);i||B.set(e,i=new Map);let s=i.get(n);return s||i.set(n,s={snap:{isLoading:true},listeners:new Set}),s}a(W,"entryFor");function F(e){return e instanceof VeriqError?e:new VeriqError(0,e instanceof Error?e.message:String(e),{cause:e})}a(F,"toVeriqError");function K(e,n){if(e.inflight)return e.inflight;let i=a(s=>{e.snap=s,e.listeners.forEach(c=>c());},"set");return e.snap.data===void 0&&!e.snap.isLoading&&i({...e.snap,isLoading:true}),e.inflight=n().then(s=>i({data:s,isLoading:false})).catch(s=>i({...e.snap.data!==void 0?{data:e.snap.data}:{},error:F(s),isLoading:false})).finally(()=>{e.inflight=void 0;}),e.inflight}a(K,"run");function _(e,n,i={}){let s=b(),c=s!==null&&e!==null&&i.enabled!==false,r=c?W(s,e):null,v=useCallback(u=>r?(r.listeners.add(u),()=>r.listeners.delete(u)):()=>{},[r]),m=useSyncExternalStore(v,()=>r?.snap??T,()=>r?.snap??T),p=useCallback(()=>r&&s?K(r,()=>n(s)):Promise.resolve(),[r,s,n]);return useEffect(()=>{if(!r)return;r.snap.data===void 0&&!r.snap.error&&p();let u=a(()=>{(typeof document>"u"||document.visibilityState!=="hidden")&&p();},"onFocus");window.addEventListener("focus",u),document.addEventListener("visibilitychange",u);let a$1=i.refreshInterval?setInterval(()=>{p();},i.refreshInterval):void 0;return ()=>{window.removeEventListener("focus",u),document.removeEventListener("visibilitychange",u),a$1&&clearInterval(a$1);}},[r,p,i.refreshInterval]),{...m.data!==void 0?{data:m.data}:{},...m.error?{error:m.error}:{},isLoading:c?m.isLoading:false,refresh:p}}a(_,"useVeriqQuery");function S(e,n={}){let i=e?`readBalance:${e.toLowerCase()}:${JSON.stringify(n.policy??null)}`:null,s=useCallback(c=>c.readBalance({address:e??"",...n.policy?{policy:n.policy}:{}}),[e,n.policy]);return _(i,s,n)}a(S,"useVerifiedBalance");function E(e,n,i={}){let s=e&&n?`readStorage:${e.toLowerCase()}:${n}:${JSON.stringify(i.policy??null)}`:null,c=useCallback(r=>r.readStorage({address:e??"",slot:n??"",...i.policy?{policy:i.policy}:{}}),[e,n,i.policy]);return _(s,c,i)}a(E,"useVerifiedStorage");function x(e={}){let n=useCallback(i=>i.health(),[]);return _("health",n,{refreshInterval:5e3,...e})}a(x,"useVeriqHealth");function G(e,n={}){let i=useCallback(s=>s.getReceipt(e??""),[e]);return _(e?`receipt:${e}`:null,i,n)}a(G,"useReceipt");var g=a((...e)=>e.filter(Boolean).join(" "),"cx"),ne={verified:"Verified",unverified:"Unverified",unsupported:"Unsupported"};function w({status:e="unsupported",error:n,label:i,size:s="sm",className:c,...r}){return jsxs("span",{...r,className:g("vq-badge",`vq-badge--${n?"error":e}`,`vq-badge--${s}`,c),children:[jsx("span",{className:"vq-badge__dot","aria-hidden":"true"}),i??(n?n.codeName:ne[e])]})}a(w,"ReceiptBadge");function N({value:e,head:n=6,tail:i=6,className:s}){let[c,r]=useState(false);return useEffect(()=>{if(!c)return;let v=setTimeout(()=>r(false),1200);return ()=>clearTimeout(v)},[c]),jsxs("button",{type:"button",className:g("vq-hash",c&&"vq-hash--copied",s),title:e,"aria-label":`Copy ${e}`,onClick:v=>{v.stopPropagation(),navigator.clipboard?.writeText(e).then(()=>r(true));},children:[jsx("span",{children:shortHash(e,n,i)}),jsx("span",{className:"vq-hash__tick","aria-live":"polite",children:c?"\u2713 Copied":""})]})}a(N,"CopyHash");function ae(e,n){return n&&/storage/i.test(n.identity.method)?(typeof e=="bigint"?e:BigInt(e)).toString():formatEth(e)}a(ae,"defaultValue");function f({label:e,children:n}){return jsxs("div",{className:"vq-row",children:[jsx("dt",{children:e}),jsx("dd",{children:n})]})}a(f,"Row");function ie(e){let n=URL.createObjectURL(new Blob([e],{type:"application/json"})),i=document.createElement("a");i.href=n,i.download="receipt.json",i.click(),URL.revokeObjectURL(n);}a(ie,"download");function I({receipt:e,value:n,attempts:i=[],error:s,formatValue:c=ae,subtitle:r,badgeExtra:v,raw:m,className:p,...u}){let a=e??null,h=JSON.stringify(m??a??(s?{code:s.code,name:s.codeName,message:s.message}:null),(d,q)=>typeof q=="bigint"?q.toString():q,2);return jsxs("section",{...u,className:g("vq-card",p),children:[jsxs("div",{className:"vq-card__head",children:[jsxs("div",{className:"vq-card__badges",children:[jsx(w,{size:"lg",...s?{error:s}:{status:a?.verification.status??"unsupported"}}),v]}),s?jsxs("div",{className:"vq-card__error",children:[jsxs("div",{className:"vq-mono vq-text-err",children:[s.codeName," \xB7 ",s.code]}),jsx("p",{className:"vq-card__meaning",children:s.meaning}),jsx("p",{className:"vq-muted",children:s.message}),jsxs("p",{className:"vq-hint",children:["\u2192 ",s.hint]})]}):n!=null&&jsx("div",{className:"vq-card__value",children:c(n,a)}),r&&jsx("div",{className:"vq-card__subtitle",children:r})]}),a&&jsxs("dl",{className:"vq-card__section",children:[jsxs(f,{label:"Block",children:[jsxs("span",{className:"vq-mono",children:["#",formatNumber(a.block.number)," ",a.block.finalized?jsx("span",{className:"vq-text-ok",children:"finalized"}):jsx("span",{className:"vq-text-warn",children:"not finalized"})]}),jsx(N,{value:a.block.hash})]}),jsx(f,{label:"State root",children:jsx(N,{value:a.block.stateRoot})}),jsx(f,{label:"Root source",children:jsx("span",{className:g("vq-chip",a.verification.rootSource==="untrusted-rpc"?"vq-chip--warn":"vq-chip--ok"),children:rootSourceLabel(a.verification.rootSource)})}),jsx(f,{label:"Verifier",children:jsx("span",{className:"vq-mono",children:a.verification.verifierLocation})}),jsx(f,{label:"Mechanisms",children:jsx("span",{className:"vq-chips",children:a.verification.mechanisms.length===0?jsx("span",{className:"vq-muted",children:"none"}):a.verification.mechanisms.map(d=>jsx("span",{className:"vq-chip vq-chip--lav",children:d},d))})}),jsx(f,{label:"Transport",children:jsx("span",{className:"vq-mono",children:a.privacy.mechanism?`${a.privacy.transport} (${a.privacy.mechanism})`:a.privacy.transport})}),jsx(f,{label:"Comparison",children:jsx("span",{className:"vq-mono",children:a.routing.comparison})}),a.warnings.length>0&&jsx(f,{label:"Warnings",children:jsx("ul",{className:"vq-list",children:a.warnings.map(d=>jsxs("li",{className:"vq-text-warn",children:[jsx("span",{className:"vq-mono",children:d.code})," \u2014 ",d.message]},d.code))})})]}),jsxs("div",{className:"vq-card__section",children:[jsx("h4",{className:"vq-card__h",children:"Attempts"}),i.length===0?jsx("p",{className:"vq-muted",children:a?`${a.routing.providersTried} provider(s) tried${a.routing.providerLabel?`, answered by ${a.routing.providerLabel}`:""}.`:"No provider was contacted."}):jsx("ol",{className:"vq-attempts",children:i.map((d,q)=>jsxs("li",{className:g("vq-attempt",d.outcome==="ok"?"vq-attempt--ok":"vq-attempt--rejected"),children:[jsx("span",{className:"vq-attempt__dot","aria-hidden":"true"}),jsxs("div",{className:"vq-attempt__body",children:[jsxs("div",{className:"vq-attempt__line",children:[jsx("span",{className:"vq-attempt__provider",children:d.provider}),jsx("span",{className:"vq-mono vq-attempt__outcome",children:d.outcome}),jsxs("span",{className:"vq-mono vq-attempt__ms",children:[Math.round(d.elapsedMs)," ms"]})]}),d.reason&&jsx("p",{className:"vq-attempt__reason",children:d.reason})]})]},q))})]}),a&&jsxs("div",{className:"vq-card__section",children:[jsx("h4",{className:"vq-card__h",children:"Bindings"}),jsxs("dl",{children:[jsx(f,{label:"requestBinding",children:jsx(N,{value:a.identity.requestBinding})}),jsx(f,{label:"resultBinding",children:jsx(N,{value:a.identity.resultBinding})}),jsx(f,{label:"requestId",children:jsx(N,{value:a.identity.requestId,head:8})})]})]}),jsxs("details",{className:"vq-raw",children:[jsx("summary",{children:"Raw JSON"}),jsx("pre",{children:h})]}),jsxs("button",{type:"button",className:"vq-pill",onClick:()=>ie(h),children:[jsx("span",{children:"Download receipt.json"}),jsx("span",{className:"vq-pill__circle","aria-hidden":"true",children:jsx("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M12 4v12M6 10l6 6 6-6M5 20h14"})})})]})]})}a(I,"ReceiptCard");function se({address:e,slot:n,format:i="eth",policy:s,refreshInterval:c,className:r,...v}){let m={...s?{policy:s}:{},...c?{refreshInterval:c}:{}},p=S(n?null:e,m),u=E(n?e:null,n??null,m),a$1=n?u:p,[h,d]=useState(false),q=useRef(null),C=useId();if(useEffect(()=>{if(!h)return;let R=a(k=>k.key==="Escape"&&d(false),"onKey"),L=a(k=>q.current&&!q.current.contains(k.target)&&d(false),"onDown");return document.addEventListener("keydown",R),document.addEventListener("mousedown",L),()=>{document.removeEventListener("keydown",R),document.removeEventListener("mousedown",L);}},[h]),a$1.isLoading&&!a$1.data)return jsxs("span",{...v,className:g("vq-value",r),"aria-busy":"true",children:[jsx("span",{className:"vq-skeleton vq-skeleton--value"}),jsx("span",{className:"vq-skeleton vq-skeleton--badge"})]});if(a$1.error&&!a$1.data)return jsxs("span",{...v,role:"alert",className:g("vq-value vq-value--error",r),children:[jsx(w,{error:a$1.error}),jsxs("span",{className:"vq-value__hint",children:[jsx("strong",{children:a$1.error.name})," ",a$1.error.hint]})]});if(!a$1.data)return null;let V=a$1.data.value,D=typeof i=="function"?i(V):i==="raw"||n?BigInt(V).toString():formatEth(V);return jsxs("span",{...v,ref:q,className:g("vq-value vq-fade",r),children:[jsxs("button",{type:"button",className:"vq-value__button","aria-expanded":h,"aria-controls":C,onClick:()=>d(R=>!R),children:[jsx("span",{className:"vq-value__num",children:D}),jsx(w,{status:a$1.data.receipt.verification.status})]}),h&&jsx("span",{id:C,role:"dialog","aria-label":"Trust receipt",className:"vq-popover vq-fade",children:jsx(I,{receipt:a$1.data.receipt,value:V,attempts:a$1.data.attempts})})]})}a(se,"VerifiedValue");function re({health:e,address:n,refreshInterval:i,className:s,...c}){let r=e!==void 0,v=b()!==null,m=x({enabled:!r&&v,...i?{refreshInterval:i}:{}}),p=r?e:m.data??null,u=p!=null&&(r||!m.error),a=u&&(p.devMode||p.rootSource==="untrusted-rpc");return jsxs("span",{...c,className:g("vq-status-group",s),children:[jsxs("span",{className:g("vq-status",u?"vq-status--online":"vq-status--offline"),role:"status",children:[jsx("span",{className:"vq-status__dot","aria-hidden":"true"}),jsx("span",{className:"vq-status__label",children:u?`Engine online \xB7 ${n??p.bind??"127.0.0.1:8547"}`:!r&&m.isLoading?"Checking engine\u2026":"Engine offline"})]}),a&&jsx("span",{className:"vq-status vq-status--dev",children:"DEV MODE \u2014 unverified"})]})}a(re,"EngineStatus");export{N as CopyHash,re as EngineStatus,w as ReceiptBadge,I as ReceiptCard,se as VerifiedValue,j as VeriqProvider,G as useReceipt,S as useVerifiedBalance,E as useVerifiedStorage,b as useVeriqClient,x as useVeriqHealth};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map